Preciso encontrar todas as visualizações e procedimentos armazenados que consomem não apenas uma determinada tabela, mas uma coluna específica em uma tabela.
O seguinte "parece" funcionar, mas existem inúmeros avisos para ter cuidado com esse método (não confiável por vários motivos, que será preterido em breve, etc):
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
Algumas abordagens alternativas que são frequentemente referenciadas são sys.sql_dependencies e sys.sql_expression_dependencies, mas nenhuma delas possui granularidade no nível da coluna.
Alguém sabe uma maneira de fazer isso? (Ou mesmo se você souber definitivamente que isso literalmente não pode ser feito, seria útil saber.)
11
O exemplo 2 desta dica é para pesquisa no nível da coluna.