Je sais que cette question est plus, mais je sais aussi que je regardais moi-même en venir avec ma propre solution. Plutôt que d'utiliser le sys.sql_dependencies
obsolète, vous pouvez utiliser la fonction de table sys.dm_sql_referencing_entities
.
La requête suivante appelle récursivement pour tracer les dépendances vers le bas, montrant chaque étape de la chaîne de dépendance:
DECLARE @table varchar(max);
SET @table = 'schema.objectname';
;with
DepsOn As (
SELECT CAST(@table As varchar(max)) As parent
, CAST(l1.referencing_schema_name
+ '.'
+ l1.referencing_entity_name As varchar(max)) As child
, l1.referencing_class_desc As [description]
, 0 As Depth
FROM sys.dm_sql_referencing_entities(@table,'OBJECT') l1
UNION ALL
SELECT l2.child As parent
, cast(l2ca.referencing_schema_name
+ '.'
+ l2ca.referencing_entity_name As varchar(max)) As child
, l2ca.referencing_class_desc As [description]
, l2.Depth + 1 As Depth
FROM DepsOn l2
CROSS APPLY sys.dm_sql_referencing_entities(l2.child,'OBJECT') l2ca
)
SELECT *
FROM DepsOn
Oui ... Je l'ai vu plusieurs solutions ... mais je suis paresseux et que vous voulez la solution pare-balles sans le mien faire l'essai et l'erreur :-) – Nestor
Pas de problème - vous avez demandé comment écrire une requête - ne pas m'en donner un! ;-) –