Condividi tramite


Visualizzare le dipendenze di una stored procedure

In questo argomento viene descritto come visualizzare le dipendenze di una stored procedure in SQL Server 2012 utilizzando SQL Server Management Studio o Transact-SQL.

  • Prima di iniziare:  Limitazioni e restrizioni, Sicurezza

  • Per visualizzare le dipendenze di una stored procedure mediante  SQL Server Management Studio, Transact-SQL, PowerShell

Prima di iniziare

Limitazioni e restrizioni

[Inizio pagina]

Sicurezza

Autorizzazioni

[Inizio pagina]

  • Funzione di sistema: sys.dm_sql_referencing_entities
    Sono necessarie l'autorizzazione CONTROL per l'entità a cui si fa riferimento e l'autorizzazione SELECT per sys.dm_sql_referencing_entities. Quando l'entità a cui si fa riferimento è una funzione di partizione, è necessaria l'autorizzazione CONTROL per il database. Per impostazione predefinita, l'autorizzazione SELECT viene concessa a public.

  • Funzione di sistema: sys.dm_sql_referenced_entities
    Sono necessarie l'autorizzazione SELECT per sys.dm_sql_referenced_entities e l'autorizzazione VIEW DEFINITION per l'entità di riferimento. Per impostazione predefinita, l'autorizzazione SELECT è concessa a public. È richiesta l'autorizzazione VIEW DEFINITION per il database o un'autorizzazione ALTER ANY DATABASE DDL TRIGGER per il database corrente quando l'entità di riferimento è un trigger DDL a livello di database. È richiesta l'autorizzazione VIEW ANY DEFINITION per il server quando l'entità di riferimento è un trigger DDL a livello di server.

  • Vista del catalogo dell'oggetto: sys.sql_expression_dependencies
    Sono necessarie l'autorizzazione VIEW DEFINITION per il database e l'autorizzazione SELECT per sys.sql_expression_dependencies per il database. Per impostazione predefinita, l'autorizzazione SELECT è concessa solo ai membri del ruolo predefinito db_owner del database. Quando le autorizzazioni SELECT e VIEW DEFINITION sono concesse a un altro utente, l'utente autorizzato può visualizzare tutte le dipendenze nel database.

Modalità di visualizzazione delle dipendenze di una stored procedure

È possibile utilizzare uno dei seguenti elementi:

  • SQL Server Management Studio

  • Transact-SQL

Utilizzo di SQL Server Management Studio

Per visualizzare le dipendenze di una stored procedure in Esplora oggetti

  1. In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espandere tale istanza.

  2. Espandere Database, espandere il database a cui appartiene la stored procedure, quindi espandere Programmabilità.

  3. Espandere Stored procedure, fare clic con il pulsante destro del mouse sulla stored procedure, quindi scegliere Visualizza dipendenze.

  4. Visualizzare l'elenco di oggetti che dipendono dalla stored procedure.

  5. Visualizzare l'elenco di oggetti da cui dipende la stored procedure.

  6. Scegliere OK.

[Inizio pagina]

Utilizzo di Transact-SQL

Per visualizzare le dipendenze di una stored procedure nell'editor di query

  • Funzione di sistema: sys.dm_sql_referencing_entities
    Questa funzione viene utilizzata per visualizzare gli oggetti che dipendono da una stored procedure.

    1. In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espandere tale istanza.

    2. Espandere Database ed espandere il database a cui appartiene la stored procedure.

    3. Scegliere Nuova query dal menu File.

    4. Copiare e incollare gli esempi seguenti nell'editor di query. Nel primo esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla 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
      
    5. Al termine della creazione della stored procedure, nel secondo esempio viene utilizzata la funzione sys.dm_sql_referencing_entities per visualizzare gli oggetti che dipendono dalla stored procedure.

      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
      
  • Funzione di sistema: sys.dm_sql_referenced_entities
    Questa funzione viene utilizzata per visualizzare gli oggetti da cui dipende una stored procedure.

    1. In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espandere tale istanza.

    2. Espandere Database ed espandere il database a cui appartiene la stored procedure.

    3. Scegliere Nuova query dal menu File.

    4. Copiare e incollare gli esempi seguenti nell'editor di query. Nel primo esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla 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
      
    5. Al termine della creazione della stored procedure, nel secondo esempio viene utilizzata la funzione sys.dm_sql_referenced_entities per visualizzare gli oggetti da cui dipende la stored procedure.

      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
      
  • Vista del catalogo dell'oggetto: sys.sql_expression_dependencies
    Questa vista può essere utilizzata per visualizzare gli oggetti da cui dipende una stored procedure o che dipendono da una stored procedure.

    • Visualizzazione degli oggetti che dipendono da una stored procedure.

      1. In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espandere tale istanza.

      2. Espandere Database ed espandere il database a cui appartiene la stored procedure.

      3. Scegliere Nuova query dal menu File.

      4. Copiare e incollare gli esempi seguenti nell'editor di query. Nel primo esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla 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
        
      5. Al termine della creazione della stored procedure, nel secondo esempio viene utilizzata la vista sys.sql_expression_dependencies per visualizzare gli oggetti che dipendono dalla stored procedure.

        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
        
    • Visualizzazione degli oggetti da cui dipende una stored procedure.

      1. In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espandere tale istanza.

      2. Espandere Database ed espandere il database a cui appartiene la stored procedure.

      3. Scegliere Nuova query dal menu File.

      4. Copiare e incollare gli esempi seguenti nell'editor di query. Nel primo esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla 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
        
      5. Al termine della creazione della stored procedure, nel secondo esempio viene utilizzata la vista sys.sql_expression_dependencies per visualizzare gli oggetti da cui dipende la stored procedure.

        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
        

Vedere anche

Riferimento

sys.dm_sql_referencing_entities (Transact-SQL)

sys.dm_sql_referenced_entities (Transact-SQL)

sys.sql_expression_dependencies (Transact-SQL)

Concetti

Rinominare una stored procedure