Accueil > Récupération des dépendances d’une vue ou d’une procédure stockée
Alexandre Plassais
15 avril 2013

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

Comment récupérer 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.

Nos autres articles
Commentaires
Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.