Exibir as dependências de um procedimento armazenado

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

  • Antes de começar: Limitações e restrições, Segurança

  • Para exibir as dependências de um procedimento usando: SQL Server Management Studio, Transact-SQL, PowerShell

Antes de começar

Limitações e restrições

[Início]

Segurança

Permissões

[Início]

  • 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 como public.

  • Função do sistema: sys.dm_sql_referenced_entities
    Requer a permissão SELECT em sys.dm_sql_referenced_entities e a permissão VIEW DEFINITION na entidade de referência. Por padrão, a permissão SELECT é concedida como public. 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 uma das seguintes opções:

  • SQL Server Management Studio

  • Transact-SQL

Usando 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, em seguida, expanda essa instância.

  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.

[Início]

Usando 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, depois, expanda essa instância.

    2. Expanda Bancos de Dados e 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 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, depois, expanda essa instância.

    2. Expanda Bancos de Dados e 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 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, depois, expanda essa instância.

      2. Expanda Bancos de Dados e 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 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, depois, expanda essa instância.

      2. Expanda Bancos de Dados e 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 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
        

Consulte também

Referência

sys.dm_sql_referencing_entities (Transact-SQL)

sys.dm_sql_referenced_entities (Transact-SQL)

sys.sql_expression_dependencies (Transact-SQL)

Conceitos

Renomear um procedimento armazenado