Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Analytics 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
Per visualizzare le dipendenze di una procedura usando:SQL Server Management Studio, 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
In Esplora oggetti, connettersi a un'istanza del motore di database e quindi espanderla.
Espandi Database, espandi il database a cui appartiene la procedura, quindi espandi 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 procedura.
Visualizzare l'elenco di oggetti da cui dipende la procedura.
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.
In Esplora oggetti, fare clic su un'istanza del Motore di database per connettersi e quindi espandere tale istanza.
Espandere Database, espandere il database a cui appartiene la procedura.
Scegliere Nuova query dal menu File .
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
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.
In Esplora oggetti, connettersi a un'istanza del motore di database ed espanderla.
Espandere Database, espandere il database a cui appartiene la procedura.
Scegliere Nuova query dal menu File .
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
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.
In Esplora oggetti, connettersi a un'istanza del motore di database e quindi espandere tale istanza.
Espandi Database, espandi il database a cui appartiene la stored procedure.
Scegliere Nuova query dal menu File .
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
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.
In Esplora oggetti, connettersi a un'istanza del Motore di database ed espanderla.
Espandere Database, 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)