Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz 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
Baza 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)