Partilhar via


Exibir as dependências de um procedimento armazenado

Aplica-se a:Banco de Dados SQL dodo AzureInstância Gerenciada SQL do Azuredo Azure Synapse Analyticsdo Analytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Este tópico descreve como exibir dependências de procedimento armazenado no SQL Server usando o SQL Server Management Studio ou o Transact-SQL.

Antes de começar

Limitações e Restrições

Segurança

Permissions

Função do sistema: sys.dm_sql_referencing_entities
Requer a permissão CONTROL na entidade referenciada e a permissão SELECT no sys.dm_sql_referencing_entities. Quando a entidade referenciada é uma função de partição, a permissão CONTROL no banco de dados é necessária. Por padrão, a permissão SELECT é concedida ao público.

Função do sistema: sys.dm_sql_referenced_entities
Requer permissão SELECT em sys.dm_sql_referenced_entities e permissão VIEW DEFINITION na entidade de referência. Por padrão, a permissão SELECT é concedida ao público. Requer a permissão VIEW DEFINITION num banco de dados ou a permissão ALTER DATABASE DDL TRIGGER num banco de dados quando a entidade de referência é um gatilho DDL a nível de banco de dados. Requer a permissão VIEW ANY DEFINITION no servidor quando a entidade de referência é um gatilho DDL no nível do servidor.

Vista do catálogo de objetos: sys.sql_expression_dependencies
Requer a permissão VIEW DEFINITION no banco de dados e a permissão SELECT no sys.sql_expression_dependencies para o banco de dados. Por padrão, a permissão SELECT é concedida apenas aos membros da função de banco de dados fixa db_owner. Quando as permissões SELECT e VIEW DEFINITION são concedidas a outro usuário, o beneficiário pode exibir todas as dependências no banco de dados.

Como exibir as dependências de um procedimento armazenado

Você pode usar uma das seguintes opções:

Usando o SQL Server Management Studio

Para exibir as dependências de um procedimento no Pesquisador de Objetos

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual o procedimento pertence e, em seguida, expanda Programabilidade.

  3. Expanda Stored Procedures, clique com o botão direito do rato no procedimento e, em seguida, clique em Ver Dependências.

  4. Exiba a lista de objetos que dependem do procedimento.

  5. Exiba a lista de objetos dos quais o procedimento depende.

  6. Clique em OK.

Usando Transact-SQL

Os exemplos de código neste artigo usam a base de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregada a partir da página principal de Microsoft SQL Server Samples and Community Projects.

Para exibir as dependências de um procedimento no Editor de Consultas

Função do sistema: sys.dm_sql_referencing_entities
Esta função é usada para exibir os objetos que dependem de um procedimento.

  1. No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual o procedimento pertence.

  3. Clique em Nova Consulta no menu Arquivo.

  4. Copie e cole os exemplos a seguir no editor de consultas. O primeiro exemplo cria o procedimento uspVendorAllInfo, que retorna os nomes de todos os fornecedores no banco de dados Ciclos da Adventure Works, os produtos que eles fornecem, suas classificações de crédito e sua disponibilidade.

    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. Depois que o procedimento é criado, o segundo exemplo usa a função sys.dm_sql_referencing_entities para exibir os objetos que dependem do procedimento.

    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  
    
    

Função do sistema: sys.dm_sql_referenced_entities
Esta função é usada para exibir os objetos dos quais um procedimento depende.

  1. No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual o procedimento pertence.

  3. Clique em Nova Consulta no menu Arquivo.

  4. Copie e cole os exemplos a seguir no editor de consultas. O primeiro exemplo cria o procedimento uspVendorAllInfo, que retorna os nomes de todos os fornecedores no banco de dados Ciclos da Adventure Works, os produtos que eles fornecem, suas classificações de crédito e sua disponibilidade.

    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. Depois que o procedimento é criado, o segundo exemplo usa a função sys.dm_sql_referenced_entities para exibir os objetos dos quais o procedimento depende.

    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  
    

Vista do catálogo de objetos: sys.sql_expression_dependencies
Essa exibição pode ser usada para exibir objetos dos quais um procedimento depende ou que dependem de um procedimento.

Exibindo os objetos que dependem de um procedimento.

  1. No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual o procedimento pertence.

  3. Clique em Nova Consulta no menu Arquivo.

  4. Copie e cole os exemplos a seguir no editor de consultas. O primeiro exemplo cria o procedimento uspVendorAllInfo, que retorna os nomes de todos os fornecedores no banco de dados Ciclos da Adventure Works, os produtos que eles fornecem, suas classificações de crédito e sua disponibilidade.

    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. Depois que o procedimento é criado, o segundo exemplo usa o modo de exibição sys.sql_expression_dependencies para exibir os objetos que dependem do procedimento.

    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  
    

Apresentação dos objetos de que um procedimento depende.

  1. No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual o procedimento pertence.

  3. Clique em Nova Consulta no menu Arquivo.

  4. Copie e cole os exemplos a seguir no editor de consultas. O primeiro exemplo cria o procedimento uspVendorAllInfo, que retorna os nomes de todos os fornecedores no banco de dados Ciclos da Adventure Works, os produtos que eles fornecem, suas classificações de crédito e sua disponibilidade.

    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. Depois que o procedimento é criado, o segundo exemplo usa a exibição sys.sql_expression_dependencies para exibir os objetos dos quais o procedimento depende.

    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  
    

Ver também

Renomear um procedimento armazenado
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)