Como Mike afirmou, a melhor maneira é usar
information_schema
. Enquanto você não estiver no banco de dados mestre, os procedimentos armazenados do sistema não serão retornados. SELECT *
FROM DatabaseName.INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
Se, por algum motivo, você tiver procedimentos armazenados fora do sistema no banco de dados mestre, poderá usar a consulta (isso filtrará a MAIORIA dos procedimentos armazenados do sistema):
SELECT *
FROM [master].INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
AND LEFT(ROUTINE_NAME, 3) NOT IN ('sp_', 'xp_', 'ms_')