sys.sql_expression_dependencies (języka Transact-SQL)
Zawiera jeden wiersz dla każdego by-name zależności w zdefiniowanej przez użytkownika obiekt w bieżącej bazie danych.Zależność między dwoma obiektami jest tworzona, gdy jeden obiekto nazwie obiekt— odwołanie, pojawia się nazwa utrwalonej SQLwyrażenie innego obiekt, o nazwie odwołanie do obiekt. Na przykład podczas odwołanie znajduje się w definicji widoku tabela , widoku, jako odwołujący się obiektzależy w tabela, do obiekt.Po przerwaniu tabela , widok jest niezdatny do użytku.
Za pomocą tego widoku wykazu raport informacji o zależnościach dla następujących obiektów:
Podmioty związanych ze schematem.
Podmioty niebędące schematu związany.
Podmioty między bazami danych i cross serwer.Nazwy jednostki są raportowane; Jednakże obiekt identyfikatory nie są rozpoznawane.
Kolumna -poziom zależności obiektów związanych ze schematem.Kolumna -poziom zależności obiektów powiązania schematu mogą być zwracane przy użyciu sys.dm_sql_referenced_entities.
Serwerpoziom DDL wyzwala w kontekście master bazy danych.
Nazwa kolumny |
Typ danych |
Opis |
---|---|---|
referencing_id |
int |
Identyfikator odwołujący się obiekt.Nie jest nullable. |
referencing_minor_id |
int |
Identyfikator kolumny, gdy odwołujący się obiekt jest kolumna; 0 inaczej.Nie jest nullable. |
referencing_class |
tinyint |
Klasa odwołujący się obiekt. 1 = Obiektu lub kolumna 12 = Bazy danych DDL wyzwalacza 13 = Serwer DDL wyzwalacza Nie jest nullable. |
referencing_class_desc |
nvarchar(60) |
Opis klasy odwoływania się do obiekt. OBJECT_OR_COLUMN DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER Nie jest nullable. |
is_schema_bound_reference |
bit |
1 = Odwołanie obiekt jest związanych ze schematem. 0 = Odwołanie obiekt jest inne niż granica schematu. Nie jest nullable. |
referenced_class |
tinyint |
Klasa wskazaną obiekt. 1 = Obiektu lub kolumna 6 = Typ 10 = Schematu XML kolekcja 21 = Partycji, funkcja Nie jest nullable. |
referenced_class_desc |
nvarchar(60) |
Opis klasy obiekt— odwołanie. OBJECT_OR_COLUMN TYP XML_SCHEMA_COLLECTION PARTITION_FUNCTION 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 podmiotów 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 dla powiązania schematu odwołania, ponieważ musi być zdefiniowany i odwołuje się przy użyciu nazwy dwóch części obiektów związanych ze schematem. |
referenced_entity_name |
sysname |
Nazwa wskazaną obiekt.Nie jest nullable. |
referenced_id |
int |
Identyfikator wskazaną obiekt. Zawsze wartość NULL dla odwołania krzyżowe serwera i między bazami danych. 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 odwołanie kolumna , gdy odwołujący się obiekt jest kolumna; 0 inaczej.Nie jest nullable. 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. |
is_caller_dependent |
bit |
Wskazuje tego schematu powiązanie dla wskazaną obiekt występuje w środowisku wykonawczym; w związku z tym rozdzielczość ID obiekt zależy od schematu wywołującego.Ten problem występuje, gdy odwołanie obiekt jest procedura składowana, rozszerzona procedura składowanalub -powiązania schematu zdefiniowanej przez użytkownika funkcja o nazwie w wykonywanie instrukcja. 1 = Odwołanie obiekt jest zależne od rozmówcy i jest rozwiązywany w czasie wykonywania.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. Na przykład, załóżmy, że 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 jest niejednoznaczne. 0 = Odwołanie jest jednoznaczne lub obiekt może być pomyślnie powiązany po wywołaniu widoku. Zawsze 0 schematu powiązane odwołania. |
Uwagi
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 |
Filtrowane indeksu |
Tak ** |
Nie |
Filtrowane dane statystyczne |
Tak ** |
Nie |
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.
** Każdej kolumna używanej w predykacie filtru jest śledzony jako odwołujący się obiekt.
*** 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 definicji WIDOKU bazy danych i wybierz na sys.sql_expression_dependencies dla bazy danych.Domyślnie, wybierz uprawnienia tylko dla członków db_owner rola bazy danychstałej.Jeśli WYBIERZESZ i VIEW DEFINITION uprawnienia są przyznawane innym użytkownikom, grantee, można wyświetlić wszystkie zależności w bazie danych.
Przykłady
A.Zwracanie podmioty, które odwołuje się inny obiekt
Poniższy przykład zwraca tabel i kolumn w widoku Production.vProductAndDescription.Widok jest zależna od jednostek (tabele i kolumny) zwrócony w referenced_entity_name i referenced_column_name kolumny.
USE AdventureWorks2008R2;
GO
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,
o.type_desc AS referencing_desciption,
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'Production.vProductAndDescription');
GO
B.Podmioty przekazujące dane, które odwołują się do innego obiekt
Poniższy przykład zwraca podmioty, które odwołują się do tabela Production.Product.Podmioty zwracane w referencing_entity_name kolumna są zależne od Product tabela.
USE AdventureWorks2008R2;
GO
SELECT OBJECT_SCHEMA_NAME ( referencing_id ) AS referencing_schema_name,
OBJECT_NAME(referencing_id) AS referencing_entity_name,
o.type_desc AS referencing_desciption,
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'Production.Product');
GO
C.Zwracanie zależności między bazami danych
Poniższy przykład zwraca wszystkie zależności między bazami danych.Przykład najpierw tworzy bazę danych db1 i dwóch procedur przechowywanych, które odwołują się do tabel w bazach danych db2 i db3.sys.sql_expression_dependenciestabela jest następnie proszeni o raportowania współzależności między bazami danych między procedurami oraz tabele. Należy zauważyć, że zostanie zwrócona wartość NULL w referenced_schema_name kolumna wskazaną obiekt t3 , ponieważ nie określono nazwy schematu dla obiekt w definicji procedury.
CREATE DATABASE db1;
GO
USE db1;
GO
CREATE PROCEDURE p1 AS SELECT * FROM db2.s1.t1;
GO
CREATE PROCEDURE p2 AS
UPDATE db3..t3
SET c1 = c1 + 1;
GO
SELECT OBJECT_NAME (referencing_id),referenced_database_name,
referenced_schema_name, referenced_entity_name
FROM sys.sql_expression_dependencies
WHERE referenced_database_name IS NOT NULL;
GO
USE master;
GO
DROP DATABASE db1;
GO
Zobacz także