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:

  • Odwołanie obiekt nie istnieje w bazie danych.

  • Rozpoznawanie nazw jest zależne od rozmówcy.W tym przypadek is_caller_dependent jest zestaw na wartość 1.

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