Share via


Afficher les dépendances d’une procédure stockée

S'applique à : SQL Server Azure SQL Database Non pris en charge. Azure Synapse Analytics Analytics Platform System (PDW)

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é

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

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.

  2. Développez Bases de données, développez la base de données à laquelle appartient la procédure, puis développez Programmabilité.

  3. Développez Procédures stockées, cliquez avec le bouton droit sur la procédure, puis cliquez sur Afficher les dépendances.

  4. Examinez la liste des objets qui dépendent de la procédure.

  5. Examinez la liste des objets dont dépend la procédure.

  6. Cliquez sur OK.

Utilisation de Transact-SQL

Les exemples de code Transact-SQL de cet article utilisent l'échantillon de base de données AdventureWorks, que vous pouvez télécharger à partir de la page d'accueil des AdventureWorks2022échantillons et Projects de communautés 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.

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.

  2. Développez Bases de données, développez la base de données à laquelle appartient la procédure.

  3. Dans le menu Fichier , cliquez sur Nouvelle requête .

  4. 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  
    
  5. 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.

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.

  2. Développez Bases de données, développez la base de données à laquelle appartient la procédure.

  3. Dans le menu Fichier , cliquez sur Nouvelle requête .

  4. 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  
    
  5. 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.

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.

  2. Développez Bases de données, développez la base de données à laquelle appartient la procédure.

  3. Dans le menu Fichier , cliquez sur Nouvelle requête .

  4. 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  
    
  5. 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_desciption,   
        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.

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.

  2. Développez Bases de données, développez la base de données à laquelle appartient la procédure.

  3. Dans le menu Fichier , cliquez sur Nouvelle requête .

  4. 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  
    
  5. 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_desciption,   
        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)