Мне нужно найти все представления и хранимые процедуры, которые используют не только определенную таблицу, но определенный столбец в таблице.
Следующее «кажется» работает, но есть многочисленные предупреждения, чтобы быть осторожным с этим методом (ненадежным по разным причинам, скоро будет объявлен устаревшим и т. Д.):
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, но ни один из них не имеет гранулярности на уровне столбцов.
Кто-нибудь знает способ сделать это? (Или даже если вы точно знаете, что это буквально невозможно, было бы полезно знать.)
sql-server
TBone
источник
источник
Ответы:
Вот пример AdventureWorks по просмотру зависимостей столбцов.
источник
where
условие. ТС хотел найти зависимости от конкретного столбца. Я думаю, что условие должно ограничиватьc.name
иed.referenced_id
/ed.referenced_entity_name
, не так ли?sys.sql_dependencies
сейчас в режиме обслуживания, и команда Microsoft рекомендует использовать толькоsys.sql_expression_dependencies
. Это сказанное - это не похоже,sys.sql_expression_dependencies
захватывает тот же уровень детализации.