sys.dm_sql_referenced_entities (języka Transact-SQL)
Zwraca jeden wiersz dla każdej zdefiniowanej przez użytkownika obiekt odwołuje się nazwa w definicji określonej odwołujący się obiekt.Zależność między dwoma obiektami jest tworzony po wywołaniu jednego użytkownika obiekt, obiekt— odwołanie, pojawia się nazwa utrwalonej SQLwyrażenie innego użytkownika obiekt, o nazwie odwołanie do obiekt. Na przykład, jeśli procedura składowana jest określony odwołujący się obiekt, funkcja zwraca podmioty wszystkich zdefiniowanych przez użytkownika, do których istnieją odwołania w procedura składowana , takich jak tabele, widoki, typy zdefiniowane przez użytkownika (UDTs) lub inne przechowywane procedury.
funkcja dynamicznego zarządzania można używać na następujące typy obiektów zawiera odwołanie do określonej obiektodwołujący się:
Podmioty związanych ze schematem
Podmioty niebędące schematu związany
Podmioty między bazami danych i cross serwer
Kolumna -poziom zależności obiektów związanych ze schematem i powiązania schematu
Typy zdefiniowane przez użytkownika (alias i CLR UDT)
Kolekcje schematu XML
Funkcje partycji
Składnia
sys.dm_sql_referenced_entities (
' [ schema_name. ] referencing_entity_name ' , ' <referencing_class> ' )
<referencing_class> ::=
{
OBJECT
| DATABASE_DDL_TRIGGER
| SERVER_DDL_TRIGGER
}
Argumenty
[ schema_name. ] referencing_entity_name
Jest nazwą odwołujący się obiekt.schema_nameodwołujący się klasa jest OBIEKTEM, jest wymagane.schema_name.referencing_entity_nameis nvarchar(517).
<referencing_class> :: = {obiekt | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER}
Jest klasa określona odwoływania się do obiekt.Tylko jedna klasa może być określony dla instrukcja.<referencing_class>is nvarchar(60).
Zwracana tabela
Nazwa kolumny |
Typ danych |
Opis |
---|---|---|
referencing_minor_id |
int |
Identyfikator kolumny, gdy odwołujący się obiekt jest kolumna; 0 inaczej.Nie jest nullable. |
referenced_server_name |
sysname |
Nazwa serwera wskazaną obiekt. W tej kolumna jest wypełniona dla zależności między serwerem, wprowadzone przez określenie prawidłową nazwę czteroczęściowym identyfikatorem.Dla informacji o nazwach wieloczęściowe, zobacz Konwencje składni języka Transact-SQL (Transact-SQL). Wartość NULL dla zależności powiązania schematu, dla których obiekt wystąpiło odwołanie do bez określania nazwy czteroczęściowym identyfikatorem. Wartość NULL dla obiektów związanych ze schematem, ponieważ musi być w tej samej bazie danych i dlatego mogą być definiowane tylko przy użyciu dwóch części (schema.object) nazwa. |
referenced_database_name |
sysname |
Nazwa bazy danych do obiekt. W tej kolumna jest wypełniona dla odwołania między bazami danych lub serwera krzyżowych, dokonane przez określenie prawidłową nazwę trzech części lub czteroczęściowym identyfikatorem. NULL-powiązania schematu odwołania, gdy określona za pomocą nazwy części jednej lub dwóch części. Wartość NULL dla obiektów związanych ze schematem, ponieważ musi być w tej samej bazie danych i dlatego mogą być definiowane tylko przy użyciu dwóch części (schema.object) nazwa. |
referenced_schema_name |
sysname |
Schemat należy do obiekt . NULL-powiązania schematu odwołania, w których obiekt wystąpiło odwołanie do bez określania nazwy schematu. Nigdy nie NULL odwołań związanych ze schematem. |
referenced_entity_name |
sysname |
Nazwa wskazaną obiekt.Nie jest nullable. |
referenced_minor_name |
sysname |
Nazwa kolumny, gdy odwołanie obiekt jest kolumna; w przeciwnym razie wartość NULL.Na przykład referenced_minor_name ma wartość NULL w wierszu, który zawiera odwołanie obiekt sam. Odwołanie obiekt jest kolumna kolumna jest identyfikowana przez nazwę w odwołującym się obiektlub użyto nadrzędną obiekt w polu Wybierz * instrukcja. |
referenced_id |
int |
Identyfikator wskazaną obiekt.Gdy referenced_minor_id jest nie 0, referenced_id jest obiekt , w której zdefiniowano kolumna . Zawsze wartość NULL dla odwołania krzyżowe serwera. Nie można powiązać wartość NULL dla odwołania między bazami danych, gdy nie można określić Identyfikatora, ponieważ baza danych jest w trybie offline lub obiekt . Wartość NULL dla odwołania w bazie danych, jeżeli nie można ustalić identyfikator.Dla odwołania powiązania schematu nie można rozpoznać Identyfikatora w następujących przypadkach:
Nigdy nie NULL odwołań związanych ze schematem. |
referenced_minor_id |
int |
Identyfikator kolumny, gdy odwołanie obiekt jest kolumna; w przeciwnym razie 0.Na przykład referenced_minor_is jest równa 0 w wierszu, który zawiera odwołanie obiekt sam. Dla-powiązania schematu odwołania kolumna zależności są zgłaszane tylko wtedy, gdy wszystkie podmioty wskazane może być powiązany.Jeśli istnieje odwołanie do obiekt nie może być nie kolumnazwiązana -poziom zależności są raportowane i referenced_minor_id jest równa 0.Zobacz przykład D. |
referenced_class |
tinyint |
Klasa wskazaną obiekt. 1 = Obiektu lub kolumna 6 = Typ 10 = Schematu XML kolekcja 21 = Partycji, funkcja |
referenced_class_desc |
nvarchar(60) |
Opis klasy obiekt— odwołanie. OBJECT_OR_COLUMN TYP XML_SCHEMA_COLLECTION PARTITION_FUNCTION |
is_caller_dependent |
bit |
Wskazuje, że powiązanie schematu wskazaną obiekt występuje w czaswykonywania; w związku z tym rozdzielczość ID obiekt zależy od schematu wywołującego.To występuje odwołanie obiekt procedura składowana, rozszerzona procedura składowanalub zdefiniowanej przez użytkownika funkcja o nazwie w ramach wykonywania instrukcja. 1 = Odwołanie obiekt jest zależne od rozmówcy i jest rozwiązywany w czaswykonywania.W tym przypadek referenced_id ma wartość NULL. 0 = Odwołanie Identyfikatora obiekt nie jest zależne od rozmówcy.Zawsze 0 dla związanych ze schematem odwołuje się do dla między bazami danych i serwera granic odniesienia, jawnie określić nazwę schematu.Na przykład, odwołanie do obiekt w formacie EXEC MyDatabase.MySchema.MyProc nie wywołującego zależnych.Jednak odwołanie w formacie EXEC MyDatabase..MyProc jest zależne od rozmówcy. |
is_ambiguous |
bit |
Wskazuje odwołanie jest niejednoznaczny i rozwiązanie w czas wykonywania do zdefiniowanej przez użytkownika funkcja, typ zdefiniowany przez użytkownika (UDT) lub xquery odwołać się do kolumna typu xml.Załóżmy na przykład, instrukcja SELECT Sales.GetOrder() FROM Sales.MySales jest zdefiniowany w procedura składowana.Dopóki nie zostanie wykonana procedura składowana , nie jest znany czy Sales.GetOrder() jest zdefiniowany przez użytkownika funkcja w Sales schematu lub kolumna o nazwie Sales typu UDT metoda o nazwie GetOrder(). 1 = Odwołanie do zdefiniowanej przez użytkownika funkcja lub kolumna typ zdefiniowany przez użytkownika (UDT) metoda jest niejednoznaczna. 0 = Odwołanie jest jednoznaczne lub obiekt może być pomyślnie powiązany, gdy wywoływana jest funkcja . Zawsze 0 odwołań związanych ze schematem. |
Wyjątki
Zwraca pusty zestaw wyników w jeden z następujących warunków:
Obiekt systemowy został określony.
Określona obiekt nie istnieje w bieżącej bazie danych.
Określonej obiekt nie odwołuje się do wszystkich podmiotów.
Przekazany nieprawidłowy parametr.
Zwraca błąd, jeśli określony odwołujący się obiekt jest numerowanych procedura składowana.
Zwraca błąd 2020, gdy nie można rozpoznać zależności kolumna .Ten błąd nie uniemożliwia kwerendy zwracanie obiektu -poziom zależności.Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z zależności SQL.
Uwagi
Ta funkcja może być wykonywany w kontekście dowolnej bazy danych do zwrócenia podmioty, które odwołują się do serwera -poziom DDL wyzwalacza.
W poniższej tabela zawiera listę typów obiektów, dla których zależności informacji tworzone i utrzymywane.Informacje o zależnościach nie jest tworzone lub utrzymywane dla reguły, ustawienia domyślne, tabel tymczasowych, tymczasowe procedury przechowywane lub obiektów systemu.
Typ encji |
Odwołanie do obiekt |
obiekt— odwołanie |
---|---|---|
Tabela |
Tak * |
Tak |
Widok |
Tak |
Tak |
Transact-SQL procedura składowana** |
Tak |
Tak |
procedura składowana aparatu CLR |
Nie |
Tak |
Transact-SQLzdefiniowana przez użytkownika funkcja |
Tak |
Tak |
Środowisko CLR zdefiniowanej przez użytkownika funkcja |
Nie |
Tak |
wyzwalacz CLR (DML i DDL) |
Nie |
Nie |
Transact-SQL WyzwalaczDML |
Tak |
Nie |
Transact-SQLBaza danych —poziom DDL wyzwalacza |
Tak |
Nie |
Transact-SQLserwer -poziom DDL wyzwalacza |
Tak |
Nie |
Rozszerzone procedury przechowywane |
Nie |
Tak |
Kolejki |
Nie |
Tak |
Synonim |
Nie |
Tak |
Typ (alias i zdefiniowany przez użytkownika typ CLR) |
Nie |
Tak |
Schemat XML kolekcja |
Nie |
Tak |
funkcjapartition |
Nie |
Tak |
* tabela jest śledzona jako odwołujący się obiekt tylko wtedy, gdy odwołuje się Transact-SQL modułu, typ zdefiniowany przez użytkownikalub schematu XML kolekcja w definicji obliczanej kolumna, ograniczenia CHECK lub domyślne ograniczenie.
** Numerowane procedur przechowywanych z wartością całkowitą większą niż 1 nie są oledzone jako albo jako odwołanie lub odwołujący się obiekt.
Aby uzyskać więcej informacji, zobacz Opis zależności SQL.
Uprawnienia
Wymaga uprawnienia SELECT na sys.dm_sql_referenced_entities i uprawnienie VIEW DEFINITION odwołujący się obiekt.Domyślnie, wybierz uprawnienia do public.Wymaga uprawnienia VIEW DEFINITION bazy danych lub ALTER DATABASE DDL WYZWALACZA uprawnienia w bazie danych, gdy odwołujący się obiekt jest bazy danych -poziom DDL wyzwalacza.Wymaga VIEW DEFINITION DOWOLNE uprawnienia na serwerze, gdy odwołujący się obiekt jest serwer -poziom DDL wyzwalacza.
Przykłady
A.Zwracanie podmiotów, wskazanych przez wyzwalaczDDLpoziombazy danych-
Poniższy przykład zwraca obiekty (tabele i kolumny), które odwołują się wyzwalaczaDDLpoziombazy danych - ddlDatabaseTriggerLog.
USE AdventureWorks2008R2;
GO
SELECT referenced_schema_name, referenced_entity_name, referenced_minor_name,
referenced_minor_id, referenced_class_desc
FROM sys.dm_sql_referenced_entities ('ddlDatabaseTriggerLog', 'DATABASE_DDL_TRIGGER');
GO
B.Podmioty przekazujące dane, które odwołuje się obiekt
Poniższy przykład zwraca podmiotów, wskazanych przez użytkownika funkcja dbo.ufnGetContactInformation.
USE AdventureWorks2008R2;
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 ('dbo.ufnGetContactInformation', 'OBJECT');
GO
C.Zwracanie zależności kolumna
Poniższy przykład tworzy tabelaTable1 z kolumnaobliczanej c zdefiniowana jako suma kolumn a i b. sys.dm_sql_referenced_entities Widok jest następnie wywoływana.Widok zwraca dwa wiersze, jeden dla każdej kolumna , określonych w kolumnaobliczanej.
USE AdventureWorks2008R2;
GO
CREATE TABLE dbo.Table1 (a int, b int, c AS a + b);
GO
SELECT referenced_schema_name AS schema_name,
referenced_entity_name AS table_name,
referenced_minor_name AS referenced_column,
COALESCE(COL_NAME(OBJECT_ID(N'dbo.Table1'),referencing_minor_id), 'N/A') AS referencing_column_name
FROM sys.dm_sql_referenced_entities ('dbo.Table1', 'OBJECT');
GO
-- Remove the table.
DROP TABLE dbo.Table1;
GO
Oto zestaw wyników.
schema_name table_name referenced_column referencing_column
----------- ---------- ----------------- ------------------
dbo Table1 a c
dbo Table1 b c
D.Zwracanie zależności schematu granica kolumna
Poniższy przykład spadnie Table1 i tworzy Table2 i procedura składowana Proc1.Odwołania do procedury Table2 i nieistniejącej tabela Table1.Widok sys.dm_sql_referenced_entities jest uruchamiany przy użyciu procedura składowana , określony jako odwołujący się obiekt.zestaw wyników zawiera jeden wiersz dla Table1 i Table2.Ponieważ Table1 nie istnieje, zależności kolumna nie można rozpoznać i zwracany jest błąd 2020.
USE AdventureWorks2008R2;
GO
IF OBJECT_ID ( 'dbo.Table1', 'U' ) IS NOT NULL
DROP TABLE dbo.Table1;
GO
CREATE TABLE dbo.Table2 (c1 int, c2 int);
GO
CREATE PROCEDURE dbo.Proc1 AS
SELECT a, b, c FROM Table1;
SELECT c1, c2 FROM Table2;
GO
SELECT referenced_id, referenced_entity_name AS table_name, referenced_minor_name AS referenced_column_name
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO
E.Wykazaniu konserwacji zależność dynamiczne
Poniższy przykład rozszerza d przykład demonstrujący dynamicznie utrzymywane zależności.Przykład najpierw odtwarza Table1, który został usunięty w przykładzie D.Następnie sys.dm_sql_referenced_entities z procedura składowana określoną jako odwołujący się obiektjest ponownie uruchom.zestaw wyników pokazuje tabele i ich odpowiednich kolumn zdefiniowanych w procedura składowana są zwracane.
USE AdventureWorks2008R2;
GO
CREATE TABLE Table1 (a int, b int, c AS a + b);
GO
SELECT referenced_id, referenced_entity_name AS table_name, referenced_minor_name as column_name
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO
DROP TABLE Table1, Table2;
DROP PROC Proc1;
GO
Oto zestaw wyników.
referenced_id, table_name, column_name
------------- ----------- -----------
2139154566 Table1 NULL
2139154566 Table1 a
2139154566 Table1 b
2139154566 Table1 c
2707154552 Table2 NULL
2707154552 Table2 c1
2707154552 Table2 c2
Zobacz także