Compartilhar via


Exibir as dependências de um procedimento armazenado

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

Antes de começar

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 do catálogo de objetos: 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

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

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

Exibição do catálogo de objetos: 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 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
    
  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 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  
    

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

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)