Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w usłudze Microsoft Fabric
W tym temacie opisano sposób wyświetlania zależności procedury składowanej w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL.
Przed rozpoczęciem:Ograniczenia i ograniczenia, Security
Aby wyświetlić zależności procedury przy użyciu polecenia:SQL Server Management Studio, transact-SQL
Przed rozpoczęciem
Ograniczenia i ograniczenia
Bezpieczeństwo
Uprawnienia
Funkcja systemowa: sys.dm_sql_referencing_entities
Wymaga uprawnień CONTROL dla referencyjnej jednostki oraz uprawnień SELECT w sys.dm_sql_referencing_entities. Gdy przywołyana jednostka jest funkcją partycji, wymagane jest uprawnienie CONTROL w bazie danych. Domyślnie uprawnienie SELECT jest przyznawane publicznie.
Funkcja systemowa: sys.dm_sql_referenced_entities
Wymaga uprawnień SELECT dla sys.dm_sql_referenced_entities oraz uprawnień VIEW DEFINITION dla obiektu odwołującego się. Domyślnie uprawnienie SELECT jest przyznawane publicznie. Wymaga uprawnienia VIEW DEFINITION w bazie danych lub uprawnienia ALTER DATABASE DDL TRIGGER w bazie danych, gdy jednostka odwołująca się jest wyzwalaczem DDL na poziomie bazy danych. Wymaga uprawnienia WYŚWIETL DOWOLNĄ DEFINICJĘ na serwerze, gdy jednostka odwołująca się jest wyzwalaczem DDL na poziomie serwera.
Widok wykazu obiektów: sys.sql_expression_dependencies
Wymaga uprawnienia WYŚWIETL DEFINICJĘ oraz uprawnienia SELECT dla sys.sql_expression_dependencies w bazie danych. Domyślnie uprawnienie SELECT jest przyznawane tylko członkom stałej roli bazy danych db_owner. Gdy uprawnienia SELECT i VIEW DEFINITION zostaną przyznane innemu użytkownikowi, odbiorca może wyświetlić wszystkie zależności w bazie danych.
Jak wyświetlić zależności procedury składowanej
Możesz użyć jednej z następujących opcji:
Korzystanie z programu SQL Server Management Studio
Aby wyświetlić zależności procedury w Eksploratorze obiektów
W Eksploratorze obiektów połącz się z instancją serwera bazy danych, a następnie rozwiń tę instancję.
Rozwiń węzeł Databases, następnie rozwiń bazę danych zawierającą procedurę, a potem rozwiń węzeł Programmability.
Rozwiń procedury składowane, kliknij prawym przyciskiem myszy procedurę, a następnie kliknij Wyświetl zależności.
Wyświetl listę obiektów, które zależą od procedury.
Wyświetl listę obiektów, od których zależy procedura.
Kliknij przycisk OK.
Korzystanie z Transact-SQL
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2022
lub AdventureWorksDW2022
, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
Aby wyświetlić zależności procedury w edytorze zapytań
Funkcja systemowa: sys.dm_sql_referencing_entities
Ta funkcja służy do wyświetlania obiektów, które zależą od procedury.
W Eksploratorze obiektów , połącz się z instancją silnika bazy danych, a następnie rozwiń tę instancję.
Rozwiń węzeł Databases, rozwiń bazę danych, do której należy procedura.
Kliknij pozycję Nowe zapytanie w menu Plik.
Skopiuj i wklej następujące przykłady do edytora zapytań. W pierwszym przykładzie zostanie utworzona procedura
uspVendorAllInfo
, która zwraca nazwy wszystkich dostawców w bazie danych Adventure Works Cycles, produktów, które dostarczają, oceny kredytowe i dostępność.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 utworzeniu procedury drugi przykład używa funkcji sys.dm_sql_referencing_entities do wyświetlania obiektów, które zależą od procedury.
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
Funkcja systemowa: sys.dm_sql_referenced_entities
Ta funkcja służy do wyświetlania obiektów, od których zależy procedura.
W „Eksploratorze obiektów” połącz się z wystąpieniem silnika bazy danych, a następnie je rozwiń.
Rozwiń sekcję Databases, rozwiń bazę danych, w której znajduje się procedura.
Kliknij pozycję Nowe zapytanie w menu Plik.
Skopiuj i wklej następujące przykłady do edytora zapytań. W pierwszym przykładzie zostanie utworzona procedura
uspVendorAllInfo
, która zwraca nazwy wszystkich dostawców w bazie danych Adventure Works Cycles, produktów, które dostarczają, oceny kredytowe i dostępność.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 utworzeniu procedury drugi przykład używa funkcji sys.dm_sql_referenced_entities do wyświetlania obiektów, od których zależy procedura.
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
Widok wykazu obiektów: sys.sql_expression_dependencies
Ten widok może służyć do wyświetlania obiektów, od których zależy procedura lub które zależą od procedury.
Wyświetlanie obiektów, które zależą od procedury.
W eksploratorze obiektów połącz się z wystąpieniem aparatu bazy danych, a następnie rozwiń to wystąpienie.
Rozwiń węzeł Databases, rozwiń bazę danych, do której należy procedura.
Kliknij pozycję Nowe zapytanie w menu Plik.
Skopiuj i wklej następujące przykłady do edytora zapytań. W pierwszym przykładzie zostanie utworzona procedura
uspVendorAllInfo
, która zwraca nazwy wszystkich dostawców w bazie danych Adventure Works Cycles, produktów, które dostarczają, oceny kredytowe i dostępność.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 utworzeniu procedury drugi przykład używa widoku sys.sql_expression_dependencies w celu wyświetlenia obiektów, które zależą od procedury.
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
Wyświetlanie obiektów, od których zależy procedura.
W Eksploratorze obiektów połącz się z wystąpieniem silnika bazy danych i rozwiń to wystąpienie.
Rozwiń węzeł Databases, rozwiń bazę danych, do której należy procedura.
Kliknij pozycję Nowe zapytanie w menu Plik.
Skopiuj i wklej następujące przykłady do edytora zapytań. W pierwszym przykładzie zostanie utworzona procedura
uspVendorAllInfo
, która zwraca nazwy wszystkich dostawców w bazie danych Adventure Works Cycles, produktów, które dostarczają, oceny kredytowe i dostępność.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 utworzeniu procedury drugi przykład używa widoku sys.sql_expression_dependencies w celu wyświetlenia obiektów, od których zależy procedura.
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
Zobacz też
Zmienianie nazwy procedury składowanej
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)