查询列出所有存储过程
正如Mike所说的那样,最好的方法是使用information_schema
。只要你不在master数据库中,系统存储过程就不会被返回。
SELECT * FROM DatabaseName.INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE'
如果由于某种原因,你在master数据库中有非系统存储过程,你可以使用以下查询(这将过滤掉大多数系统存储过程):
SELECT * FROM [master].INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE' AND LEFT(ROUTINE_NAME, 3) NOT IN ('sp_', 'xp_', 'ms_')