Exibir as dependências de um procedimento armazenado

Aplica-se a: SQL Server Banco de Dados SQL do Azure Não há suporte. Azure Synapse Analytics Analytics Platform System (PDW)

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

Permissões

Função do sistema: sys.dm_sql_referencing_entities
Requer a permissão CONTROL da entidade referenciada e a permissão SELECT em sys.dm_sql_referencing_entities. Quando a entidade referenciada é uma função de partição, a permissão CONTROL é exigida no banco de dados. Por padrão, a permissão SELECT é concedida a 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 a público. Requer permissão VIEW DEFINITION no banco de dados ou permissão ALTER DATABASE DDL TRIGGER no banco de dados quando a entidade de referência é um gatilho DDL do banco de dados. Requer permissão de VIEW ANY DEFINITION no servidor quando a entidade de referência é um gatilho DDL de servidor.

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

Como exibir as dependências de um procedimento armazenado

Você pode usar um dos itens a seguir:

Como usar o SQL Server Management Studio.

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

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

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual pertence o procedimento e expanda Programação.

  3. Expanda Procedimentos Armazenados, clique com o botão direito do mouse no procedimento e clique em Exibir 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 o Transact-SQL

Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022 ou AdventureWorksDW2022, que pode ser baixado da home page 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-a.

  2. Expanda Bancos de Dadose o banco de dados ao qual o procedimento pertence.

  3. Clique em Nova Consulta no menu Arquivo .

  4. Copie e cole o texto 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-a.

  2. Expanda Bancos de Dadose o banco de dados ao qual o procedimento pertence.

  3. Clique em Nova Consulta no menu Arquivo .

  4. Copie e cole o texto 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  
    

Exibição de catálogo do objeto: sys.sql_expression_dependencies
Esta 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-a.

  2. Expanda Bancos de Dadose o banco de dados ao qual o procedimento pertence.

  3. Clique em Nova Consulta no menu Arquivo .

  4. Copie e cole o texto 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 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_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  
    

Exibindo os objetos dois quais um procedimento depende.

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

  2. Expanda Bancos de Dadose o banco de dados ao qual o procedimento pertence.

  3. Clique em Nova Consulta no menu Arquivo .

  4. Copie e cole o texto 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_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  
    

Confira 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)