Condividi tramite


Visualizzare le dipendenze di una stored procedure

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Database SQL in Microsoft Fabric

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 a public. È richiesta l'autorizzazione VIEW DEFINITION sul database o l'autorizzazione ALTER DATABASE DDL TRIGGER sul database 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 procedura in Esplora oggetti

  1. In Esplora oggetti, connettersi a un'istanza del motore di database e quindi espanderla.

  2. Espandi Database, espandi il database a cui appartiene la procedura, quindi espandi 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 procedura.

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

  6. Fare clic su OK.

Utilizzo di Transact-SQL

Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2022 o AdventureWorksDW2022, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.

Per visualizzare le dipendenze di una procedura nell'editor di query

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

  1. In Esplora oggetti, fare clic su un'istanza del Motore di database per connettersi e quindi espandere tale istanza.

  2. Espandere Database, espandere il database a cui appartiene la procedura.

  3. Scegliere Nuova query dal menu File .

  4. Copiare e incollare gli esempi seguenti nell'editor di query. Nel primo esempio viene creata la procedura uspVendorAllInfo, che restituisce i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti che forniscono, il loro rating di credito e la loro 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 procedura.

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

  2. Espandere Database, espandere il database a cui appartiene la procedura.

  3. Scegliere Nuova query dal menu File .

  4. Copiare e incollare gli esempi seguenti nell'editor di query. Il primo esempio crea la procedura uspVendorAllInfo, che restituisce i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti che forniscono, il loro rating creditizio e la loro 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 procedura o che dipendono da una procedura.

Visualizzazione degli oggetti che dipendono da una procedura.

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

  2. Espandi Database, espandi 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. Il primo esempio crea la procedura uspVendorAllInfo, che restituisce i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti che forniscono, la loro valutazione creditizia e la loro 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_description,   
        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 procedura.

  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.

  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_description,   
        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)