マイクが述べたように、最良の方法はinformation_schema
を使用することです 。マスターデータベースにいない限り、システムストアドプロシージャは返されません。
SELECT *
FROM DatabaseName.INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
何らかの理由でマスターデータベースにシステム以外のストアドプロシージャがある場合は、クエリを使用できます(これにより、ほとんどのシステムストアドプロシージャが除外されます):
SELECT *
FROM [master].INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
AND LEFT(ROUTINE_NAME, 3) NOT IN ('sp_', 'xp_', 'ms_')