Udostępnij za pomocą


sys.dm_sql_referencing_entities (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca jeden wiersz dla każdej jednostki w aktualnej bazie danych, która odnosi się do innej jednostki zdefiniowanej przez użytkownika według nazwy. Zależność między dwoma podmiotami powstaje, gdy jedna z nich, zwana cytowanym podmiotem, pojawia się pod nazwą w trwałym wyrażeniu SQL innej jednostki, zwanej encją referencyjną. Na przykład, jeśli jako referencjonowana jednostka jest określony typ zdefiniowany przez użytkownika (UDT), funkcja ta zwraca każdą jednostkę zdefiniowaną przez użytkownika, która odnosi się do tego typu według nazwy w definicji. Funkcja nie zwraca encji w innych bazach danych, które mogą odwoływać się do określonej jednostki. Funkcja ta musi być wykonywana w kontekście głównej bazy danych, aby zwrócić wyzwalacz DDL na poziomie serwera jako encję referencyjną.

Możesz użyć tej dynamicznej funkcji zarządzania do raportowania następujących typów encji w aktualnej bazie danych, które odnoszą się do określonej jednostki:

  • Podmioty powiązane ze schematem lub niezwiązane ze schematem

  • Wyzwalacze DDL na poziomie bazy danych

  • Wyzwalacze DDL na poziomie serwera

Dotyczy do: SQL Server (SQL Server 2008 (10.0.x) i nowszy), SQL Database.

Transact-SQL konwencje składni

Składnia

sys.dm_sql_referencing_entities (  
    ' schema_name.referenced_entity_name ' , ' <referenced_class> ' )  
  
<referenced_class> ::=  
{  
    OBJECT  
  | TYPE  
  | XML_SCHEMA_COLLECTION  
  | PARTITION_FUNCTION  
}  

Arguments

schema_name.referenced_entity_name To nazwa wspomnianej jednostki.

schema_name jest wymagany, chyba że dana klasa jest PARTITION_FUNCTION.

schema_name.referenced_entity_namejest nvarchar(517).

<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION } To klasa cytowanego bytu. Na każde zdanie można określić tylko jedną klasę.

<referenced_class> to Nvarchar(60).

Zwracana tabela

Nazwa kolumny Typ danych Description
referencing_schema_name sysname Schemat, do którego należy podmiot odwołujący. Jest dopuszczana wartość null.

NULL dla wyzwalaczy DDL na poziomie bazy danych i serwera.
referencing_entity_name sysname Nazwa podmiotu odwołującego. Nie jest nullowalny.
referencing_id int ID podmiotu odwołującego się. Nie jest nullowalny.
referencing_class tinyint Klasa podmiotu referencyjnego. Nie jest nullowalny.

1 = Obiekt

12 = Wyzwalacz DDL na poziomie bazy danych

13 = Wyzwalacz DDL na poziomie serwera
referencing_class_desc nvarchar(60) Opis klasy jednostki odwołującej.

OBJECT

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER
is_caller_dependent bit Wskazuje, że rozwiązywanie identyfikatora jednostki przywoływanej następuje w czasie działania, ponieważ zależy od schematu wywołującego.

1 = Podmiot odwołujący się ma potencjał do odwołania się do tej jednostki; jednak rozdzielczość identyfikatora jednostki do referencji zależy od wywołującego i nie może być określona. Dzieje się to tylko dla niepowiązanych ze schematem odniesień do procedury przechowywanej, rozszerzonej procedury przechowywanej lub funkcji zdefiniowanej przez użytkownika wywołanej w instrukcji EXEKUTE.

0 = Jednostka referencyjna nie jest zależna od wywołującego.

Exceptions

Zwraca pusty zbiór wyników pod dowolnymi z następujących warunków:

  • Określany jest obiekt systemowy.

  • Wskazana jednostka nie istnieje w aktualnej bazie danych.

  • Określony podmiot nie odnosi się do żadnych podmiotów.

  • Przekazywany jest nieprawidłowy parametr.

Zwraca błąd, gdy określony cytowany obiekt jest procedurą przechowywaną z numerem.

Uwagi

Poniższa tabela przedstawia typy podmiotów, dla których tworzone i utrzymywane są informacje zależności. Informacje o zależności nie są tworzone ani utrzymywane dla reguł, domyślnych, tabel tymczasowych, procedur tymczasowych przechowywanych ani obiektów systemowych.

Typ encji Jednostka odwołująca Podmiot referencyjny
Tabela Tak* Tak
View Tak Tak
Transact-SQL procedura przechowywana** Tak Tak
Procedura przechowywana CLR Nie. Tak
Transact-SQL funkcja definiowana przez użytkownika Tak Tak
Funkcja CLR zdefiniowana przez użytkownika Nie. Tak
Spust CLR (DML i DDL) Nie. Nie.
Transact-SQL wyzwalacz DML Tak Nie.
Transact-SQL wyzwalacz DDL na poziomie bazy danych Tak Nie.
Transact-SQL wyzwalacz DDL na poziomie serwera Tak Nie.
Rozszerzone procedury składowane Nie. Tak
Kolejka Nie. Tak
Synonym Nie. Tak
Typ (alias i CLR zdefiniowany przez użytkownika) Nie. Tak
Kolekcja schematów XML Nie. Tak
Funkcja podziału Nie. Tak

* Tabela jest śledzona jako encja referencyjna tylko wtedy, gdy odnosi się do modułu Transact-SQL, typu zdefiniowanego przez użytkownika lub kolekcji schematów XML w definicji obliczonej kolumny, ograniczenia CHECK lub ograniczenia DEFAULT.

** Numerowane procedury przechowywane o liczbie całkowitej większej niż 1 nie są śledzone ani jako jednostka referencyjna, ani referencyjna.

Permissions

SQL Server 2008 (10.0.x) - SQL Server 2012 (11.x)

  • Wymaga uprawnień CONTROL do obiektu, do którego się odwołuje. Gdy przywołyana jednostka jest funkcją partycji, wymagane jest uprawnienie CONTROL w bazie danych.

  • Wymaga zgody SELECT na sys.dm_sql_referencing_entities. Domyślnie uprawnienie SELECT jest przyznawane publicznie.

SQL Server 2014 (12.x) i późniejsze

  • Nie wymaga uprawnień do obiektu, do którego się odwołuje. Częściowe wyniki mogą być zwrócone, jeśli użytkownik ma VIEW DEFINITION tylko dla niektórych odwołujących się obiektów.

  • Wymaga VIEW DEFINITION na obiekcie, gdy jednostka odwołująca się jest obiektem.

  • Wymaga VIEW DEFINITION w bazie danych, gdy jednostką referencyjną jest wyzwalacz DDL na poziomie bazy danych.

  • Wymaga ZOBACZENIA DOWOLNEJ DEFINICJI na serwerze, gdy jednostką referencyjną jest wyzwalacz DDL na poziomie serwera.

Przykłady

A. Zwracanie jednostek odnoszących się do danego bytu

Poniższy przykład zwraca jednostki w aktualnej bazie danych, które odnoszą się do określonej tabeli.

USE AdventureWorks2022;  
GO  
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent  
FROM sys.dm_sql_referencing_entities ('Production.Product', 'OBJECT');  
GO  

B. Zwracanie encji odnoszących się do danego typu

Poniższy przykład zwraca byty odnoszące się do typu dbo.Flagaliasu . Zbiór wyników pokazuje, że dwie procedury przechowywane korzystają z tego typu. Typ ten dbo.Flag jest również używany w definicji kilku kolumn w tabeli HumanResources.Employee ; jednak ponieważ typ nie występuje w definicji obliczonej kolumny, ograniczenia CHECK ani ograniczenia DEFAULT w tabeli, nie zwraca się żadnych wierszy tabeli HumanResources.Employee .

USE AdventureWorks2022;  
GO  
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent  
FROM sys.dm_sql_referencing_entities ('dbo.Flag', 'TYPE');  
GO  

Oto zestaw wyników.

referencing_schema_name referencing_entity_name   referencing_id referencing_class_desc is_caller_dependent  
----------------------- -------------------------  ------------- ---------------------- -------------------  
HumanResources          uspUpdateEmployeeHireInfo  1803153469    OBJECT_OR_COLUMN       0  
HumanResources          uspUpdateEmployeeLogin     1819153526    OBJECT_OR_COLUMN       0  
(2 row(s) affected)`  

Zobacz też

sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_zależności wyrażeń (Transact-SQL)