J'ai besoin de trouver toutes les vues et procédures stockées qui consomment non seulement une certaine table, mais une colonne spécifique dans une table.
Les éléments suivants "semblent" fonctionner, mais il existe de nombreux avertissements pour être prudent avec cette méthode (non fiable pour diverses raisons, bientôt obsolète, 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
Certaines approches alternatives qui sont souvent référencées sont sys.sql_dependencies et sys.sql_expression_dependencies, mais aucune d'entre elles n'a une granularité au niveau des colonnes.
Quelqu'un connaît-il une façon de procéder? (Ou même si vous savez définitivement que cela ne peut littéralement pas être fait, il serait utile de le savoir.)
sql-server
tbone
la source
la source
Réponses:
Voici un exemple AdventureWorks sur l'affichage des dépendances de colonne.
la source
where
condition. TS voulait trouver des dépendances sur la colonne spécifique. Je pense que la condition doit être contraintec.name
eted.referenced_id
/ed.referenced_entity_name
, non?sys.sql_dependencies
est maintenant en mode maintenance, et l'équipe Microsoft recommande d'utiliser uniquementsys.sql_expression_dependencies
. Cela étant dit - cela ne ressemble pas à lasys.sql_expression_dependencies
capture du même niveau de détail.