Visualizzare le dipendenze di una stored procedure
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL di Azure Synapse Analytics Platform System (PDW) 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
Per visualizzare le dipendenze di una stored procedure usando: SQL Server Management Stu, 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
In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.
Espandere Database, espandere il database a cui appartiene la stored procedure, quindi espandere Programmabilità.
Espandere Stored procedure, fare clic con il pulsante destro del mouse sulla stored procedure, quindi scegliere Visualizza dipendenze.
Visualizzare l'elenco di oggetti che dipendono dalla stored procedure.
Visualizzare l'elenco di oggetti da cui dipende la stored procedure.
Fare clic su OK.
Utilizzo di Transact-SQL
Gli esempi di codice Transact-SQL in questo articolo utilizzano il database campione AdventureWorks2022
o AdventureWorksDW2022
, che è possibile scaricare dalla home page di Esempi di Microsoft SQL Server e progetti collettivi.
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.
In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.
Espandere Databaseed espandere il database a cui appartiene la stored procedure.
Scegliere Nuova query dal menu File .
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
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.
In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.
Espandere Databaseed espandere il database a cui appartiene la stored procedure.
Scegliere Nuova query dal menu File .
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
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.
In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.
Espandere Databaseed espandere il database a cui appartiene la stored procedure.
Scegliere Nuova query dal menu File .
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
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 stored procedure.
In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.
Espandere Databaseed espandere il database a cui appartiene la stored procedure.
Scegliere Nuova query dal menu File .
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
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)