Como dijo Mike, la mejor manera es usar information_schema
. Mientras no esté en la base de datos maestra, no se devolverán los procedimientos almacenados del sistema.
SELECT *
FROM DatabaseName.INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
Si por alguna razón tuviera procedimientos almacenados que no son del sistema en la base de datos maestra, podría usar la consulta (esto filtrará la MAYORÍA de los procedimientos almacenados del sistema):
SELECT *
FROM [master].INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
AND LEFT(ROUTINE_NAME, 3) NOT IN ('sp_', 'xp_', 'ms_')