我需要查找所有不仅消耗特定表,而且消耗表中特定列的视图和存储过程。
以下“似乎”可以正常工作,但是使用此方法时要注意许多警告(由于各种原因不可靠,即将被弃用,等等):
SELECT object_name(so.id) TableName, sc.name ColumnName, OBJECT_NAME(sd.id) DependentObjectName,
(SELECT xtype FROM sysobjects so WHERE so.id = sd.id) Object_Type
FROM sysobjects so INNER JOIN syscolumns sc
ON so.id = sc.id
INNER JOIN sysdepends sd
ON so.id = sd.depid and sc.colid = sd.depnumber
WHERE
object_name(so.id) = 'MyTableName'
AND sc.name = 'MyColumnName'
order by object_name(so.id), Object_Type
经常引用的一些替代方法是sys.sql_dependencies和sys.sql_expression_dependencies,但是这些方法都不具有列级粒度。
有人知道这样做的方法吗?(或者,即使您确定地知道它实际上无法完成,了解它也会很有帮助。)
1
本技巧的示例2用于列级搜索。