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.)
sql-server
tbone
fonte
fonte
Respostas:
Aqui está um exemplo do AdventureWorks para exibir dependências de coluna.
fonte
where
condição. O TS queria encontrar dependências na coluna específica. Eu acho que a condição deve restringirc.name
eed.referenced_id
/ed.referenced_entity_name
, não deveria?sys.sql_dependencies
agora está no modo de manutenção, e a equipe da Microsoft recomenda apenas o usosys.sql_expression_dependencies
. Dito isto - não parecesys.sql_expression_dependencies
capturar o mesmo nível de detalhe.