Udostępnij za pośrednictwem


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:

  • Odwołanie obiekt nie istnieje w bazie danych.

  • Schemat odwołanie obiekt zależy od schematu rozmówcy i jest rozwiązywany w czaswykonywania.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 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