Zobrazení závislostí uložené procedury
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
databáze SQL v Microsoft Fabric
Toto téma popisuje, jak zobrazit závislosti uložených procedur v SQL Serveru pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL.
Než začnete:Omezení a restrikce, Zabezpečení
Zobrazení závislostí procedury pomocí:SQL Server Management Studio, Transact-SQL
Než začnete
Omezení a restrikce
Bezpečnost
Dovolení
Systémová funkce: sys.dm_sql_referencing_entities
Vyžaduje oprávnění CONTROL u odkazované entity a oprávnění SELECT pro sys.dm_sql_referencing_entities. Pokud je odkazovaná entita funkcí oddílu, vyžaduje se oprávnění CONTROL k databázi. Ve výchozím nastavení se oprávnění SELECT uděluje veřejnosti.
Systémová funkce: sys.dm_sql_referenced_entities
Vyžaduje oprávnění SELECT pro sys.dm_sql_referenced_entities a oprávnění VIEW DEFINITION pro odkazovanou entitu. Ve výchozím nastavení se oprávnění SELECT uděluje veřejnosti. Vyžaduje oprávnění VIEW DEFINITION pro databázi nebo oprávnění ALTER DATABASE DDL TRIGGER v databázi, pokud odkazující entita je trigger DDL na úrovni databáze. Vyžaduje oprávnění VIEW ANY DEFINITION na serveru, pokud je odkazující entita triggerem DDL na úrovni serveru.
Zobrazení katalogu objektů: sys.sql_expression_dependencies
Vyžaduje oprávnění VIEW DEFINITION pro databázi a oprávnění SELECT pro sys.sql_expression_dependencies pro databázi. Ve výchozím nastavení je oprávnění SELECT uděleno pouze členům db_owner pevné databázové role. Pokud jsou oprávnění SELECT a VIEW DEFINITION udělena jinému uživateli, může příjemce zobrazit všechny závislosti v databázi.
Zobrazení závislostí uložené procedury
Můžete použít jednu z těchto možností:
Použití aplikace SQL Server Management Studio
Zobrazení závislostí procedury v Průzkumníku objektů
V Průzkumníku objektů se připojte k instanci databázového stroje a pak tuto instanci rozbalte.
Rozsviňte Databáze, rozsviňte databázi, která obsahuje proceduru, a potom rozsviňte Programovatelnost.
Rozbalte uložené procedury, klepněte pravým tlačítkem myši na proceduru a klepněte na příkaz Zobrazit závislosti.
Prohlédněte si seznam objektů, které závisí na postupu.
Zobrazte seznam objektů, na kterých procedura závisí.
Klepněte na tlačítko OK.
Použití Transact-SQL
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2022
nebo AdventureWorksDW2022
, kterou si můžete stáhnout z domovské stránky Microsoft SQL Server pro ukázky a komunitní projekty .
Zobrazení závislostí procedury v editoru dotazů
Systémová funkce: sys.dm_sql_referencing_entities
Tato funkce slouží k zobrazení objektů, které závisí na postupu.
V Průzkumníku objektů, připojte se k instanci databázového stroje a poté tuto instanci rozbalte.
Rozbalte Databáze, rozbalte databázi, do které procedura náleží.
V nabídce Soubor klikněte na Nový dotaz.
Zkopírujte následující příklady a vložte je do editoru dotazů. První příklad vytvoří
uspVendorAllInfo
proceduru, která vrátí názvy všech dodavatelů v databázi Adventure Works Cycles, produkty, které dodávají, jejich ratingy a dostupnost.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
Po vytvoření procedury použije druhý příklad funkci sys.dm_sql_referencing_entities k zobrazení objektů, které závisí na postupu.
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
Systémová funkce: sys.dm_sql_referenced_entities
Tato funkce slouží k zobrazení objektů, na které procedura závisí.
V Průzkumníku objektů, připojte se k instanci Databázového stroje a poté tuto instanci rozbalte.
Rozbalte Databázea poté rozbalte databázi, do které patří procedura.
V nabídce Soubor klikněte na Nový dotaz.
Zkopírujte následující příklady a vložte je do editoru dotazů. První příklad vytvoří
uspVendorAllInfo
proceduru, která vrátí názvy všech dodavatelů v databázi Adventure Works Cycles, produkty, které dodávají, jejich ratingy a dostupnost.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
Po vytvoření procedury použije druhý příklad funkci sys.dm_sql_referenced_entities k zobrazení objektů, na které procedura závisí.
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
Zobrazení katalogu objektů: sys.sql_expression_dependencies
Toto zobrazení lze použít k zobrazení objektů, na které procedura závisí nebo která závisí na postupu.
Zobrazení objektů, které závisí na postupu.
V Průzkumníku objektů, připojte se k instanci Databázového stroje a pak ji rozbalte.
Rozbalte Databáze, rozbalte databázi, do které procedura patří.
V nabídce Soubor klikněte na Nový dotaz.
Zkopírujte následující příklady a vložte je do editoru dotazů. První příklad vytvoří
uspVendorAllInfo
proceduru, která vrátí názvy všech dodavatelů v databázi Adventure Works Cycles, produkty, které dodávají, jejich ratingy a dostupnost.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
Po vytvoření procedury použije druhý příklad zobrazení sys.sql_expression_dependencies k zobrazení objektů, které závisí na postupu.
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
Zobrazení objektů, na které procedura závisí.
V Průzkumníku objektůse připojte k instanci databázového serveru a poté tuto instanci rozbalte.
Rozbalte Databáze, a poté rozbalte databázi, do které procedura patří.
V nabídce Soubor klikněte na Nový dotaz.
Zkopírujte následující příklady a vložte je do editoru dotazů. První příklad vytvoří
uspVendorAllInfo
proceduru, která vrátí názvy všech dodavatelů v databázi Adventure Works Cycles, produkty, které dodávají, jejich ratingy a dostupnost.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
Po vytvoření procedury použije druhý příklad zobrazení sys.sql_expression_dependencies k zobrazení objektů, na které procedura závisí.
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
Viz také
přejmenovat uloženou proceduru
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)