Мне нужно найти все представления и хранимые процедуры, которые используют не только определенную таблицу, но определенный столбец в таблице.
Следующее «кажется» работает, но есть многочисленные предупреждения, чтобы быть осторожным с этим методом (ненадежным по разным причинам, скоро будет объявлен устаревшим и т. Д.):
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 этого совета предназначен для поиска на уровне столбцов.