Visualizzare le dipendenze di una stored procedureView the Dependencies of a Stored Procedure

In questo argomento viene descritto come visualizzare le dipendenze di una stored procedure in SQL Server 2017SQL Server 2017 usando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to view stored procedure dependencies in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

Sicurezza Security

Autorizzazioni Permissions

Funzione di sistema: sys.dm_sql_referencing_entitiesSystem Function: 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.Requires CONTROL permission on the referenced entity and SELECT permission on sys.dm_sql_referencing_entities. Quando l'entità a cui si fa riferimento è una funzione di partizione, è necessaria l'autorizzazione CONTROL per il database.When the referenced entity is a partition function, CONTROL permission on the database is required. Per impostazione predefinita, l'autorizzazione SELECT è concessa al ruolo public.By default, SELECT permission is granted to public.

Funzione di sistema: sys.dm_sql_referenced_entitiesSystem Function: 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.Requires SELECT permission on sys.dm_sql_referenced_entities and VIEW DEFINITION permission on the referencing entity. Per impostazione predefinita, l'autorizzazione SELECT è concessa al ruolo public.By default, SELECT permission is granted to 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.Requires VIEW DEFINITION permission on the database or ALTER DATABASE DDL TRIGGER permission on the database when the referencing entity is a database-level DDL trigger. È richiesta l'autorizzazione VIEW ANY DEFINITION per il server quando l'entità di riferimento è un trigger DDL a livello di server.Requires VIEW ANY DEFINITION permission on the server when the referencing entity is a server-level DDL trigger.

Vista del catalogo dell'oggetto: sys.sql_expression_dependenciesObject Catalog View: sys.sql_expression_dependencies
Sono richieste l'autorizzazione VIEW DEFINITION sul database e l'autorizzazione SELECT su sys.sql_expression_dependencies per il database.Requires VIEW DEFINITION permission on the database and SELECT permission on sys.sql_expression_dependencies for the database. L'autorizzazione SELECT è concessa per impostazione predefinita solo ai membri del ruolo predefinito del database di db_owner.By default, SELECT permission is granted only to members of the db_owner fixed database role. Quando le autorizzazioni SELECT e VIEW DEFINITION vengono concesse a un altro utente, l'utente autorizzato può visualizzare tutte le dipendenze nel database.When SELECT and VIEW DEFINITION permissions are granted to another user, the grantee can view all dependencies in the database.

Modalità di visualizzazione delle dipendenze di una stored procedure How to View the Dependencies of a Stored Procedure

È possibile usare uno dei seguenti elementi:You can use one of the following:

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per visualizzare le dipendenze di una stored procedure in Esplora oggettiTo view the dependencies of a procedure in Object Explorer

  1. In Esplora oggetti connettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.

  2. Espandere Database, espandere il database a cui appartiene la stored procedure, quindi espandere Programmabilità.Expand Databases, expand the database in which the procedure belongs, and then expand Programmability.

  3. Espandere Stored procedure, fare clic con il pulsante destro del mouse sulla stored procedure, quindi scegliere Visualizza dipendenze.Expand Stored Procedures, right-click the procedure and then click View Dependencies.

  4. Visualizzare l'elenco di oggetti che dipendono dalla stored procedure.View the list of objects that depend on the procedure.

  5. Visualizzare l'elenco di oggetti da cui dipende la stored procedure.View the list of objects on which the procedure depends.

  6. Scegliere OK.Click OK.

Utilizzo di Transact-SQL Using Transact-SQL

Per visualizzare le dipendenze di una stored procedure nell'editor di queryTo view the dependencies of a procedure in Query Editor

Funzione di sistema: sys.dm_sql_referencing_entitiesSystem Function: sys.dm_sql_referencing_entities
Questa funzione viene usata per visualizzare gli oggetti che dipendono da una stored procedure.This function is used to display the objects that depend on a procedure.

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.

  2. Espandere Databaseed espandere il database a cui appartiene la stored procedure.Expand Databases, expand the database in which the procedure belongs.

  3. Scegliere Nuova query dal menu File .Click on New Query under the File menu.

  4. Copiare e incollare gli esempi seguenti nell'editor di query.Copy and paste the following examples into the query editor. Nel primo esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works CyclesAdventure Works Cycles , i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla disponibilità.The first example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    USE AdventureWorks2008R2;  
    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.After the procedure is created, the second example uses the sys.dm_sql_referencing_entities function to display the objects that depend on the 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_entitiesSystem Function: sys.dm_sql_referenced_entities
    Questa funzione viene usata per visualizzare gli oggetti da cui dipende una stored procedure.This function is used to display the objects a procedure depends on.

  6. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.

  7. Espandere Databaseed espandere il database a cui appartiene la stored procedure.Expand Databases, expand the database in which the procedure belongs.

  8. Scegliere Nuova query dal menu File .Click on New Query under the File menu.

  9. Copiare e incollare gli esempi seguenti nell'editor di query.Copy and paste the following examples into the query editor. Nel primo esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works CyclesAdventure Works Cycles , i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla disponibilità.The first example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    USE AdventureWorks2008R2;  
    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  
    
  10. 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.After the procedure is created, the second example uses the sys.dm_sql_referenced_entities function to display the objects that the procedure depends on.

    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_dependenciesObject Catalog View: 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.This view can be used to display objects that a procedure depends on or that depend on a procedure.

    Visualizzazione degli oggetti che dipendono da una stored procedure.Displaying the objects that depend on a procedure.

    1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.
  11. Espandere Databaseed espandere il database a cui appartiene la stored procedure.Expand Databases, expand the database in which the procedure belongs.

  12. Scegliere Nuova query dal menu File .Click on New Query under the File menu.

  13. Copiare e incollare gli esempi seguenti nell'editor di query.Copy and paste the following examples into the query editor. Nel primo esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works CyclesAdventure Works Cycles , i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla disponibilità.The first example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    USE AdventureWorks2008R2;  
    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  
    
  14. 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.After the procedure is created, the second example uses the sys.sql_expression_dependencies view to display the objects that depend on the 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.Displaying the objects a procedure depends on.

    1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.
  15. Espandere Databaseed espandere il database a cui appartiene la stored procedure.Expand Databases, expand the database in which the procedure belongs.

  16. Scegliere Nuova query dal menu File .Click on New Query under the File menu.

  17. Copiare e incollare gli esempi seguenti nell'editor di query.Copy and paste the following examples into the query editor. Nel primo esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works CyclesAdventure Works Cycles , i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla disponibilità.The first example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    USE AdventureWorks2008R2;  
    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  
    
  18. 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.After the procedure is created, the second example uses the sys.sql_expression_dependencies view to display the objects the procedure depends on.

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

Rinominare una stored procedure Rename a Stored Procedure
sys.dm_sql_referencing_entities (Transact-SQL) sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL) sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)sys.sql_expression_dependencies (Transact-SQL)