Ich muss alle Ansichten und gespeicherten Prozeduren finden, die nicht nur eine bestimmte Tabelle, sondern eine bestimmte Spalte in einer Tabelle belegen.
Das Folgende "scheint" zu funktionieren, aber es gibt zahlreiche Warnungen, die bei dieser Methode zu beachten sind (aus verschiedenen Gründen nicht zuverlässig, bald veraltet usw.):
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
Einige alternative Ansätze, auf die häufig verwiesen wird, sind sys.sql_dependencies und sys.sql_expression_dependencies, aber keiner dieser Ansätze weist eine Granularität auf Spaltenebene auf.
Kennt jemand einen Weg, dies zu tun? (Oder selbst wenn Sie definitiv wissen, dass dies buchstäblich nicht möglich ist, wäre es hilfreich zu wissen.)
sql-server
Knochen
quelle
quelle
Antworten:
Hier ist ein AdventureWorks-Beispiel zum Anzeigen von Spaltenabhängigkeiten.
quelle
where
Bedingung erfüllt. TS wollte Abhängigkeiten in der jeweiligen Spalte finden. Ich denke, die Bedingung sollte einschränkenc.name
unded.referenced_id
/ed.referenced_entity_name
oder nicht?sys.sql_dependencies
befindet sich jetzt im Wartungsmodus und das Microsoft-Team empfiehlt die Verwendung nursys.sql_expression_dependencies
. Davon abgesehen sieht es nicht so aus, als würde essys.sql_expression_dependencies
den gleichen Detaillierungsgrad erfassen.