Visa beroenden för en lagrad procedur
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
Det här avsnittet beskriver hur du visar lagrade procedurberoenden i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL.
Innan du börjar:Begränsningar och restriktioner, Säkerhet
Om du vill visa beroenden för en procedur använder du:SQL Server Management Studio, Transact-SQL
Innan du börjar
Begränsningar och restriktioner
Säkerhet
Behörigheter
Systemfunktion: sys.dm_sql_referencing_entities
Kräver KONTROLL-behörighet för den refererade entiteten och SELECT-behörigheten på sys.dm_sql_referencing_entities. När den refererade entiteten är en partitionsfunktion krävs KONTROLL-behörighet för databasen. Som standardinställning beviljas SELECT-behörighet till allmänheten.
Systemfunktion: sys.dm_sql_referenced_entities
Kräver SELECT-behörighet för sys.dm_sql_referenced_entities- och VIEW DEFINITION-behörighet för den refererande entiteten. Som standard beviljas SELECT-behörighet till alla användare. Kräver VIEW DEFINITION-behörighet för databasen eller ALTER DATABASE DDL TRIGGER-behörighet för databasen när den refererande entiteten är en DDL-utlösare på databasnivå. Kräver VIEW ANY DEFINITION-behörighet på servern när den refererande entiteten är en DDL-utlösare på servernivå.
Objektkatalogvy: sys.sql_expression_dependencies
Kräver VIEW DEFINITION-behörighet för databasen och SELECT-behörighet för sys.sql_expression_dependencies för databasen. Som standard beviljas SELECT-behörighet endast medlemmar i den db_owner fasta databasrollen. När behörigheterna SELECT och VIEW DEFINITION beviljas till en annan användare kan den beviljade användaren visa alla beroenden i databasen.
Hur man visar beroenden för en lagrad procedur
Du kan använda något av följande:
Använda SQL Server Management Studio
Om du vill visa beroenden för en procedur i Object Explorer
I Object Explorer ansluter du till en instans av databasmotorn och expanderar sedan den instansen.
Expandera Databaser, expandera databasen som proceduren tillhör och expandera sedan Programmerbarhet.
Expandera Lagrade procedurer, högerklicka på proceduren och klicka sedan på Visa beroenden.
Visa listan över objekt som är beroende av proceduren.
Visa listan över objekt som proceduren är beroende av.
Klicka på OK.
Använda Transact-SQL
Kodexemplen i den här artikeln använder AdventureWorks2022
- eller AdventureWorksDW2022
-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
Visa beroenden för en procedur i Frågeredigeraren
Systemfunktion: sys.dm_sql_referencing_entities
Den här funktionen används för att visa de objekt som är beroende av en procedur.
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
Expandera Databaser, expandera databasen som proceduren tillhör.
Klicka på Ny fråga under menyn Arkiv.
Kopiera och klistra in följande exempel i frågeredigeraren. I det första exemplet skapas proceduren
uspVendorAllInfo
som returnerar namnen på alla leverantörer i databasen Adventure Works Cycles, de produkter som de tillhandahåller, deras kreditbetyg och deras tillgänglighet.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
När proceduren har skapats använder det andra exemplet funktionen sys.dm_sql_referencing_entities för att visa de objekt som är beroende av proceduren.
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
Systemfunktion: sys.dm_sql_referenced_entities
Den här funktionen används för att visa de objekt som en procedur är beroende av.
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
Expandera Databaser; expandera databasen som proceduren tillhör.
Klicka på Ny fråga under menyn Arkiv.
Kopiera och klistra in följande exempel i frågeredigeraren. I det första exemplet skapas proceduren
uspVendorAllInfo
som returnerar namnen på alla leverantörer i databasen Adventure Works Cycles, de produkter som de tillhandahåller, deras kreditbetyg och deras tillgänglighet.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
När proceduren har skapats använder det andra exemplet funktionen sys.dm_sql_referenced_entities för att visa de objekt som proceduren är beroende av.
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
Objektkatalogvy: sys.sql_expression_dependencies
Den här vyn kan användas för att visa objekt som en procedur är beroende av eller som är beroende av en procedur.
Visa de objekt som är beroende av en procedur.
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
Expandera Databaser, expandera databasen som proceduren tillhör.
Klicka på Ny fråga under menyn Arkiv.
Kopiera och klistra in följande exempel i frågeredigeraren. I det första exemplet skapas proceduren
uspVendorAllInfo
som returnerar namnen på alla leverantörer i databasen Adventure Works Cycles, de produkter som de tillhandahåller, deras kreditbetyg och deras tillgänglighet.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
När proceduren har skapats använder det andra exemplet vyn sys.sql_expression_dependencies för att visa de objekt som är beroende av proceduren.
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
Att visa de objekt som en procedur är beroende av.
I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.
Expandera Databaseroch utöka den databas som proceduren tillhör.
Klicka på Ny fråga under menyn Arkiv.
Kopiera och klistra in följande exempel i frågeredigeraren. I det första exemplet skapas proceduren
uspVendorAllInfo
som returnerar namnen på alla leverantörer i databasen Adventure Works Cycles, de produkter som de tillhandahåller, deras kreditbetyg och deras tillgänglighet.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
När proceduren har skapats använder det andra exemplet vyn sys.sql_expression_dependencies för att visa de objekt som proceduren är beroende av.
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
Se även
byt namn på en lagrad procedur
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)