Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-database in Microsoft Fabric
In dit onderwerp wordt beschreven hoe u opgeslagen procedureafhankelijkheden in SQL Server kunt weergeven met behulp van SQL Server Management Studio of Transact-SQL.
Voordat u begint:beperkingen en beperkingenBeveiliging
De afhankelijkheden van een procedure weergeven met behulp van:SQL Server Management Studio, Transact-SQL-
Voordat u begint
Beperkingen en beperkingen
Veiligheid
Machtigingen
Systeemfunctie: sys.dm_sql_referencing_entities
Vereist CONTROL-machtiging voor de entiteit waarnaar wordt verwezen en select-machtiging voor sys.dm_sql_referencing_entities. Wanneer de entiteit waarnaar wordt verwezen een partitiefunctie is, is CONTROL-machtiging voor de database vereist. Select-machtigingen worden standaard verleend aan het publiek.
Systeemfunctie: sys.dm_sql_referenced_entities
Vereist SELECT-machtiging voor sys.dm_sql_referenced_entities- en VIEW DEFINITION-machtiging voor de verwijzende entiteit. Select-machtigingen worden standaard verleend aan het publiek. Vereist VIEW DEFINITION-machtiging voor de database of ALTER DATABASE DDL TRIGGER-machtiging voor de database wanneer de verwijzingsentiteit een DDL-trigger op databaseniveau is. Vereist VIEW ANY DEFINITION-machtiging op de server wanneer de verwijzende entiteit een DDL-trigger op serverniveau is.
Objectcatalogusweergave: sys.sql_expression_afhankelijkheden
Vereist machtiging VIEW DEFINITION voor de database en SELECT-machtiging voor sys.sql_expression_afhankelijkheden voor de database. Select-machtigingen worden standaard alleen verleend aan leden van de db_owner vaste databaserol. Wanneer SELECT- en VIEW DEFINITION-machtigingen worden verleend aan een andere gebruiker, kan de grantee alle afhankelijkheden in de database bekijken.
De afhankelijkheden van een opgeslagen procedure weergeven
U kunt een van de volgende opties gebruiken:
SQL Server Management Studio gebruiken
De afhankelijkheden van een procedure weergeven in Objectverkenner
Maak in Objectverkenner verbinding met een exemplaar van de Database Engine en vouw dat exemplaar vervolgens uit.
Vouw Databasesuit, vouw de database waartoe de procedure behoort uit en vouw vervolgens Programmeerbaarheiduit.
Vouw opgeslagen proceduresuit, klik met de rechtermuisknop op de procedure en klik vervolgens op Afhankelijkheden weergeven.
Bekijk de lijst met objecten die afhankelijk zijn van de procedure.
Bekijk de lijst met objecten waarvan de procedure afhankelijk is.
Klik op OK-.
Transact-SQL gebruiken
De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022
of AdventureWorksDW2022
voorbeelddatabase, die u kunt downloaden van de Microsoft SQL Server-voorbeelden en communityprojecten startpagina.
De afhankelijkheden van een procedure weergeven in de Query-editor
Systeemfunctie: sys.dm_sql_referencing_entities
Deze functie wordt gebruikt om de objecten weer te geven die afhankelijk zijn van een procedure.
Maak in Objectverkennerverbinding met een exemplaar van database-engine en vouw vervolgens dat exemplaar uit.
Uitbreiden Databases, breid de database waarin de procedure zich bevindt uit.
Klik op Nieuwe query onder het menu Bestand.
Kopieer en plak de volgende voorbeelden in de queryeditor. In het eerste voorbeeld wordt de
uspVendorAllInfo
procedure gemaakt, die de namen retourneert van alle leveranciers in de database Adventure Works Cycles, de producten die ze leveren, hun credit ratings en hun beschikbaarheid.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
Nadat de procedure is gemaakt, wordt in het tweede voorbeeld de functie sys.dm_sql_referencing_entities gebruikt om de objecten weer te geven die afhankelijk zijn van de 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
Systeemfunctie: sys.dm_sql_referenced_entities
Deze functie wordt gebruikt om de objecten weer te geven waarop een procedure afhankelijk is.
Maak in Objectverkennerverbinding met een exemplaar van de Database-Engine en vouw vervolgens dat exemplaar uit.
Vouw Databasesuit, vouw de database waarin de procedure hoort uit.
Klik op Nieuwe query onder het menu Bestand.
Kopieer en plak de volgende voorbeelden in de queryeditor. In het eerste voorbeeld wordt de
uspVendorAllInfo
procedure gemaakt, die de namen retourneert van alle leveranciers in de database Adventure Works Cycles, de producten die ze leveren, hun credit ratings en hun beschikbaarheid.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
Nadat de procedure is gemaakt, wordt in het tweede voorbeeld de functie sys.dm_sql_referenced_entities gebruikt om de objecten weer te geven waarop de procedure afhankelijk is.
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
Objectcatalogusweergave: sys.sql_expression_afhankelijkheden
Deze weergave kan worden gebruikt om objecten weer te geven waarvoor een procedure afhankelijk is of die afhankelijk is van een procedure.
De objecten weergeven die afhankelijk zijn van een procedure.
Maak in Objectverkennerverbinding met een instantie van Database Engine en vouw vervolgens die instantie uit.
Vouw Databasesuit, vouw de database waarin de procedure hoort uit.
Klik op Nieuwe query onder het menu Bestand.
Kopieer en plak de volgende voorbeelden in de queryeditor. In het eerste voorbeeld wordt de
uspVendorAllInfo
procedure gemaakt, die de namen retourneert van alle leveranciers in de database Adventure Works Cycles, de producten die ze leveren, hun credit ratings en hun beschikbaarheid.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
Nadat de procedure is gemaakt, wordt in het tweede voorbeeld de weergave sys.sql_expression_afhankelijkheden gebruikt om de objecten weer te geven die afhankelijk zijn van de 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
Het weergeven van de objecten waar een procedure van afhankelijk is.
Maak in Objectverkennerverbinding met een exemplaar van de Database Engine en breid vervolgens dat exemplaar uit.
Vouw Databasesuit, vouw de database waarin de procedure hoort uit.
Klik op Nieuwe query onder het menu Bestand.
Kopieer en plak de volgende voorbeelden in de queryeditor. In het eerste voorbeeld wordt de
uspVendorAllInfo
procedure gemaakt, die de namen retourneert van alle leveranciers in de database Adventure Works Cycles, de producten die ze leveren, hun credit ratings en hun beschikbaarheid.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
Nadat de procedure is gemaakt, wordt in het tweede voorbeeld de weergave sys.sql_expression_afhankelijkheden gebruikt om de objecten weer te geven waarop de procedure afhankelijk is.
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
Zie ook
de naam van een opgeslagen procedure wijzigen
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_afhankelijkheden (Transact-SQL)