Afficher les dépendances d’une procédure stockée
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Base de données SQL dans Microsoft Fabric
Cette rubrique décrit comment visualiser les dépendances des procédures stockées dans SQL Server en utilisant SQL Server Management Studio ou Transact-SQL.
Avant de commencer : Limitations et restrictions, Sécurité
Pour afficher les dépendances d’une procédure, avec : SQL Server Management Studio, Transact-SQL
Avant de commencer
Limitations et restrictions
Sécurité
autorisations
Fonction système : sys.dm_sql_referencing_entities
Requiert l'autorisation CONTROL sur l'entité référencée et l'autorisation SELECT sur sys.dm_sql_referencing_entities. Lorsque l'entité référencée est une fonction de partition, l'autorisation CONTROL sur la base de données est requise. Par défaut, l'autorisation SELECT est accordée à public.
Fonction système : sys.dm_sql_referenced_entities
Requiert l'autorisation SELECT sur sys.dm_sql_referenced_entities et l'autorisation VIEW DEFINITION sur l'entité de référence. Par défaut, l'autorisation SELECT est accordée à public. Requiert l'autorisation VIEW DEFINITION sur la base de données ou l'autorisation ALTER DATABASE DDL TRIGGER sur la base de données lorsque l'entité de référence est un déclencheur DDL au niveau de la base de données. Requiert l'autorisation VIEW ANY DEFINITION sur le serveur lorsque l'entité de référence est un déclencheur DDL au niveau du serveur.
Affichage catalogue d’objets : sys.sql_expression_dependencies
Requiert l'autorisation VIEW DEFINITION sur la base de données et l'autorisation SELECT sur sys.sql_expression_dependencies pour la base de données. Par défaut, l'autorisation SELECT est accordée uniquement aux membres du rôle de base de données fixe db_owner. Lorsque les autorisations SELECT et VIEW DEFINITION sont accordées à un autre utilisateur, le bénéficiaire peut consulter toutes les dépendances dans la base de données.
Pour afficher les dépendances d'une procédure stockée
Vous pouvez utiliser l'un des éléments suivants :
Utilisation de SQL Server Management Studio
Pour afficher les dépendances d'une procédure dans l'Explorateur d'objets
Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.
Développez Bases de données, développez la base de données à laquelle appartient la procédure, puis développez Programmabilité.
Développez Procédures stockées, cliquez avec le bouton droit sur la procédure, puis cliquez sur Afficher les dépendances.
Examinez la liste des objets qui dépendent de la procédure.
Examinez la liste des objets dont dépend la procédure.
Cliquez sur OK.
Utilisation de Transact-SQL
Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022
ou AdventureWorksDW2022
fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.
Pour afficher les dépendances d'une procédure dans l'Éditeur de requête
Fonction système : sys.dm_sql_referencing_entities
Cette fonction est utilisée pour afficher les objets qui dépendent d'une procédure.
Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.
Développez Bases de données, développez la base de données à laquelle appartient la procédure.
Dans le menu Fichier , cliquez sur Nouvelle requête .
Copiez et collez les exemples suivants dans l'éditeur de requête. Le premier exemple crée la procédure
uspVendorAllInfo
, qui renvoie les noms de tous les vendeurs de la base de données Adventure Works Cycles, les produits qu'ils fournissent, leur solvabilité et leur disponibilité.USE AdventureWorks2022; GO IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Une fois la procédure créée, le deuxième exemple utilise la fonction sys.dm_sql_referencing_entities pour afficher les objets qui dépendent de la procédure.
USE AdventureWorks2022; GO SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent FROM sys.dm_sql_referencing_entities ('Purchasing.uspVendorAllInfo', 'OBJECT'); GO
Fonction système : sys.dm_sql_referenced_entities
Cette fonction est utilisée pour afficher les objets dont la procédure dépend.
Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.
Développez Bases de données, développez la base de données à laquelle appartient la procédure.
Dans le menu Fichier , cliquez sur Nouvelle requête .
Copiez et collez les exemples suivants dans l'éditeur de requête. Le premier exemple crée la procédure
uspVendorAllInfo
, qui renvoie les noms de tous les vendeurs de la base de données Adventure Works Cycles, les produits qu'ils fournissent, leur solvabilité et leur disponibilité.USE AdventureWorks2022; GO IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Une fois la procédure créée, le deuxième exemple utilise la fonction sys.dm_sql_referenced_entities pour afficher les objets dont dépend la procédure.
USE AdventureWorks2022; GO SELECT referenced_schema_name, referenced_entity_name, referenced_minor_name,referenced_minor_id, referenced_class_desc, is_caller_dependent, is_ambiguous FROM sys.dm_sql_referenced_entities ('Purchasing.uspVendorAllInfo', 'OBJECT'); GO
Affichage catalogue d’objets : sys.sql_expression_dependencies
Cette vue peut être utilisée pour afficher des objets dont une procédure dépend ou qui dépendent d'une procédure.
Affichage des objets qui dépendent d'une procédure.
Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.
Développez Bases de données, développez la base de données à laquelle appartient la procédure.
Dans le menu Fichier , cliquez sur Nouvelle requête .
Copiez et collez les exemples suivants dans l'éditeur de requête. Le premier exemple crée la procédure
uspVendorAllInfo
, qui renvoie les noms de tous les vendeurs de la base de données Adventure Works Cycles, les produits qu'ils fournissent, leur solvabilité et leur disponibilité.USE AdventureWorks2022; GO IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Une fois la procédure créée, le deuxième exemple utilise la fonction sys.sql_expression_dependencies pour afficher les objets qui dépendent de la procédure.
USE AdventureWorks2022; GO SELECT OBJECT_SCHEMA_NAME ( referencing_id ) AS referencing_schema_name, OBJECT_NAME(referencing_id) AS referencing_entity_name, o.type_desc AS referencing_description, COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id, referencing_class_desc, referenced_class_desc, referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name, COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name, is_caller_dependent, is_ambiguous FROM sys.sql_expression_dependencies AS sed INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id WHERE referenced_id = OBJECT_ID(N'Purchasing.uspVendorAllInfo') GO
Affichage des objets dont une procédure dépend.
Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.
Développez Bases de données, développez la base de données à laquelle appartient la procédure.
Dans le menu Fichier , cliquez sur Nouvelle requête .
Copiez et collez les exemples suivants dans l'éditeur de requête. Le premier exemple crée la procédure
uspVendorAllInfo
, qui renvoie les noms de tous les vendeurs de la base de données Adventure Works Cycles, les produits qu'ils fournissent, leur solvabilité et leur disponibilité.USE AdventureWorks2022; GO IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT v.Name AS Vendor, p.Name AS 'Product name', v.CreditRating AS 'Rating', v.ActiveFlag AS Availability FROM Purchasing.Vendor v INNER JOIN Purchasing.ProductVendor pv ON v.BusinessEntityID = pv.BusinessEntityID INNER JOIN Production.Product p ON pv.ProductID = p.ProductID ORDER BY v.Name ASC; GO
Une fois la procédure créée, le deuxième exemple utilise la fonction sys.sql_expression_dependencies pour afficher les objets dont dépend la procédure.
USE AdventureWorks2022; GO SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name, o.type_desc AS referencing_description, COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id, referencing_class_desc, referenced_class_desc, referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name, COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name, is_caller_dependent, is_ambiguous FROM sys.sql_expression_dependencies AS sed INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id WHERE referencing_id = OBJECT_ID(N'Purchasing.uspVendorAllInfo'); GO
Voir aussi
Renommer une procédure stockée
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)