Visualizzare le dipendenze di una stored procedure

Si applica a: SQL Server Database SQL di Azure Not supported. Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Questo argomento descrive come visualizzare le dipendenze di una stored procedure in SQL Server usando SQL Server Management Studio o Transact-SQL.

Prima di iniziare

Limitazioni e restrizioni

Sicurezza

Autorizzazioni

Funzione di sistema: sys.dm_sql_referencing_entities
Richiede 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 è concessa al ruolo public.

Funzione di sistema: sys.dm_sql_referenced_entities
È richiesta 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 al ruolo 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 richieste l'autorizzazione VIEW DEFINITION sul database e l'autorizzazione SELECT su sys.sql_expression_dependencies per il database. L'autorizzazione SELECT è concessa per impostazione predefinita solo ai membri del ruolo predefinito del database di db_owner. Quando le autorizzazioni SELECT e VIEW DEFINITION vengono 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 usare uno dei seguenti elementi:

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 ed espanderla.

  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. Fare clic su OK.

Utilizzo di Transact-SQL

Questo articolo richiede il database di esempio AdventureWorks2022, che può essere scaricato dalla pagina iniziale relativa a progetti della community ed esempi per Microsoft SQL Server.

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

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

  1. In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.

  2. Espandere Databaseed 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. Nell'esempio viene creata la stored procedure uspVendorAllInfo, che restituisce i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti che forniscono, oltre alle informazioni relative alla posizione creditizia e alla disponibilità.

    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. Dopo aver creato la stored procedure, nel secondo esempio viene usata la funzione sys.dm_sql_referencing_entities per visualizzare gli oggetti che dipendono dalla stored procedure.

    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  
    
    

Funzione di sistema: sys.dm_sql_referenced_entities
Questa funzione viene usata per visualizzare gli oggetti da cui dipende una stored procedure.

  1. In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.

  2. Espandere Databaseed 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. Nell'esempio viene creata la stored procedure uspVendorAllInfo, che restituisce i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti che forniscono, oltre alle informazioni relative alla posizione creditizia e alla disponibilità.

    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. Dopo aver creato la stored procedure, nel secondo esempio viene usata la funzione sys.dm_sql_referenced_entities per visualizzare gli oggetti da cui dipende la stored procedure.

    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 del catalogo dell'oggetto: sys.sql_expression_dependencies
Questa vista può essere usata 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 ed espanderla.

  2. Espandere Databaseed 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. Nell'esempio viene creata la stored procedure uspVendorAllInfo, che restituisce i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti che forniscono, oltre alle informazioni relative alla posizione creditizia e alla disponibilità.

    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. Al termine della creazione della stored procedure, nel secondo esempio viene usata la vista sys.sql_expression_dependencies per visualizzare gli oggetti che dipendono dalla stored procedure.

    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  
    

Visualizzazione degli oggetti da cui dipende una stored procedure.

  1. In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.

  2. Espandere Databaseed 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. Nell'esempio viene creata la stored procedure uspVendorAllInfo, che restituisce i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti che forniscono, oltre alle informazioni relative alla posizione creditizia e alla disponibilità.

    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. Al termine della creazione della stored procedure, nel secondo esempio viene usata la vista sys.sql_expression_dependencies per visualizzare gli oggetti da cui dipende la stored procedure.

    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  
    

Vedi anche

Rinominare una stored procedure
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)