Afficher les dépendances d'une procédure stockée
Cette rubrique explique comment consulter les dépendances des procédures stockées dans SQL Server 2012 à l'aide de SQL Server Management Studio ou d'Transact-SQL.
Avant de commencer : Limitations et restrictions, Sécurité
Pour afficher les dépendances d'une procédure, en utilisant : SQL Server Management Studio, Transact-SQL, PowerShell
Avant de commencer
Limitations et restrictions
[Haut de la page]
Sécurité
Autorisations
[Haut de la page]
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 :
SQL Server Management Studio
Transact-SQL
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.
[Haut de la page]
Utilisation de Transact-SQL
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 de 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 retourne le nom de tous les fournisseurs dans la base de données Adventure Works Cycles, les produits qu'ils vendent, leurs conditions de crédit et leur disponibilité.
USE AdventureWorks2012; 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 AdventureWorks2012; 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 de 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 retourne le nom de tous les fournisseurs dans la base de données Adventure Works Cycles, les produits qu'ils vendent, leurs conditions de crédit et leur disponibilité.
USE AdventureWorks2012; 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 la procédure dépend.
USE AdventureWorks2012; 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_referencing_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 de 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 retourne le nom de tous les fournisseurs dans la base de données Adventure Works Cycles, les produits qu'ils vendent, leurs conditions de crédit et leur disponibilité.
USE AdventureWorks2012; 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 vue sys.sql_expression_dependencies pour afficher les objets qui dépendent de la procédure.
USE AdventureWorks2012; 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.
Dans l'Explorateur d'objets, connectez-vous à une instance de 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 retourne le nom de tous les fournisseurs dans la base de données Adventure Works Cycles, les produits qu'ils vendent, leurs conditions de crédit et leur disponibilité.
USE AdventureWorks2012; 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 vue sys.sql_expression_dependencies pour afficher les objets dont la procédure dépend.
USE AdventureWorks2012; 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
Référence
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)