查看SQL Server数据库对象列表时如何识别系统对象?
|
我正在尝试列出服务器上所有数据库中的所有存储过程,但我似乎无法可靠地过滤掉系统对象。我正在使用:
SELECT *
FROM sysobjects
WHERE id > 100
这似乎在MSDB以外的每个数据库中都可以正常工作,MSDB充满了大量具有正常ID的存储proc,但是它们是系统存储的proc。据我所知,我无法使用sysobjects表中的任何值来过滤掉系统存储的proc-其他人是否知道可用于过滤的值?
它们都被标记为type = \“ P \”,这意味着它是存储的proc,但是似乎没有标志来指定它是系统存储的proc还是用户的proc。我可以将sys.objects视图和过滤器用于\“ IsMsShipped = 0 \”,但是我希望某些东西也可以在SQL 2000上使用,因此,我希望使用较旧的视图(例如sysobjects) \是可能的。
没有找到相关结果
已邀请:
2 个回复
笛驮型迸
您可以将sys.objects更改为sys.tables,但它仍然可以使用,或者使用“ type”列进行过滤。或使用OBJECTPROPERTY(object_id,\'IsProcedure \')等。 注意:它是SQL Server 2005+中的sys.objects 注意2:OBJECTPROPERTY也将适用于SQL Server 2000:
逆捐凶撤小
SQL Server 2000