【发布时间】:2025-12-19 19:10:12
【问题描述】:
我正在尝试列出服务器上所有数据库中的所有存储过程,但我似乎无法可靠地过滤掉系统对象。我正在使用:
SELECT *
FROM sysobjects
WHERE id > 100
这似乎在除 MSDB 之外的每个数据库中都能正常工作,MSDB 充满了大量具有正常 ID 的存储过程,但它们是系统存储的过程。据我所知,我无法使用 sysobjects 表中的任何值过滤掉系统存储的过程 - 有没有人知道可以用来过滤的值?
它们都被标记为 type="P",这意味着它是一个存储过程,但似乎没有标志来指定它是系统存储过程还是用户存储过程。我可以使用 sys.objects 视图并筛选“IsMsShipped=0”,但我想要一些也适用于 SQL 2000 的东西,所以如果可能的话,我更喜欢使用旧视图(如 sysobjects)。
【问题讨论】:
标签: sql-server sql-server-2008 database-schema