Récupération des dépendances d’une vue ou d’une procédure stockée

Les vues et procédures stockées c’est bien ! … Sauf quand on débarque sur un schéma que l’on ne connait pas.
Il y a bien moyen de voir les dépendances en faisant un clic droit dessus, mais le résultat est dans un wizard hiérarchisé, et tout recopier à la main : ce qui n’est pas très utilisable.
Il reste donc les tables « système ». Dans nôtre cas « sys.sql_dependencies » nous retourne les dépendances d’un objet.
Il est évidemment possible qu’une proc stoc/vue, fasse appel à d’autres objets, qui font appel à d’autres objets,… Dans ce cas, il nous faudra utiliser la récursivité des CTE pour retrouver les dépendances:
DECLARE @ObjectID as INT SET @ObjectId=OBJECT_ID(‘MyProcedure’) BEGIN WITH DependentObjectCTE(DependentObjectID, DependentObjectName, ReferencedObjectName, ReferencedObjectID) AS ( SELECT DISTINCT sd.object_id, OBJECT_NAME(sd.object_id), ReferencedObject = OBJECT_NAME(sd.referenced_major_id), ReferencedObjectID = sd.referenced_major_id FROM sys.sql_dependencies sd JOIN sys.objects so ON sd.referenced_major_id = so.object_id WHERE sd.referenced_major_id = @ObjectID UNION ALL SELECT sd.object_id, OBJECT_NAME(sd.object_id), OBJECT_NAME(referenced_major_id), object_id FROM sys.sql_dependencies sd JOIN DependentObjectCTE do ON sd.referenced_major_id = do.DependentObjectID WHERE sd.referenced_major_id <> sd.object_id ) SELECT DISTINCT DependentObjectName FROM DependentObjectCTE c END
A noter que la table recense toutes les tables, procédures, fonctions, vues, types table…, mais ne peux pas prendre en compte les tables modifiées par les triggers. Il vous faudra donc faire un audit à part pour recenser ceux-ci.
La requête à l’avantage d’avoir un résultat en lignes, facilement utilisable dans des rapports, outils, ou même dans des fichiers Excel, ce qui permet de faire gagner pas mal de temps.