sys.SQL_expression_dependencies (Transact-SQL)

Bir kullanıcı tanımlı varlık geçerli veritabanındaki her by-name bağımlılığı için bir satır içerir.İki varlık arasında bir bağımlılık adı verilen bir varlıkoluşturulduğunda başvurulan varlık, adı başka bir varlıkolarak adlandırılan, kalıcı bir SQLifade olarak görüntülenen varlıkbaşvuran. Örneğin, bir tablo görünüm tanımında başvurulduğunda görünüm başvuru varlık tablobaşvurulan varlıkbağlıdır.Görünüm, tablo kesilirse kullanılamaz.

Bu katalog görünümü rapor bağımlılık bilgileri için aşağıdaki varlıklar için kullanabilirsiniz:

  • Şemaya bağlı varlıkları.

  • Olmayan şemaya bağlı varlıkları.

  • Veritabanları arası ve sunucular arası varlıklar.Varlık adları bildirilir; Ancak, varlık kimlikleri çözülemedi.

  • Sütun -düzey bağımlılıkları şemaya bağlı varlıkları.Sütun -düzey bağımlılıkları şemaya bağlı nesneler için döndürülmesi kullanarak sys.dm_sql_referenced_entities.

  • Sunucudüzey DDL tetikler bağlamında, master veritabanı.

Sütun adı

Veri türü

Açıklama

referencing_id

int

Başvuru varlıkkimliği.Nullable değil.

referencing_minor_id

int

Başvuru varlık sütunolduğunda sütun kimliği; Aksi takdirde 0.Nullable değil.

referencing_class

tinyint

Başvuru varlıksınıf.

1 = Nesne veya sütun

12 = Veritabanı DDL tetikleyici

13 = Sunucu DDL tetikleyici

Nullable değil.

referencing_class_desc

nvarchar(60)

varlıkbaşvuran sınıf açıklaması.

OBJECT_OR_COLUMN

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER

Nullable değil.

is_schema_bound_reference

bit

1 = Başvurulan varlık .

0 = Başvurulan varlık .

Nullable değil.

referenced_class

tinyint

Başvurulan varlıksınıf.

1 = Nesne veya sütun

6 = Türü

10 = xml şema koleksiyon

21 Bölüm işlev=

Nullable değil.

referenced_class_desc

nvarchar(60)

Başvurulan varlıksınıf açıklaması.

OBJECT_OR_COLUMN

TÜRÜ

XML_SCHEMA_COLLECTION

PARTITION_FUNCTION

Nullable değil.

referenced_server_name

sysname

Başvurulan varlıksunucusunun adı.

Bu sütun , geçerli bir dört ad belirterek yapılan sunucular arası bağımlılıkları için doldurulur.Çok parçalı adları hakkında daha fazla bilgi için bkz: Transact-SQL Sözdizimi Kuralları (Transact-SQL).

null olmayan-şemaya bağlı varlıklar kendisi için dört adı belirtilmeden varlık başvuruldu.

Aynı veritabanında olmalıdır ve bu nedenle yalnızca iki parçalı kullanılarak tanımlanabilir çünkü şemaya bağlı varlıklar için null (schema.object) adı.

referenced_database_name

sysname

Başvurulan varlıkveritabanının adı.

Bu sütun , geçerli bir üç bölümlü veya dört adı belirterek yapılan çapraz veritabanı veya sunucu çapraz başvuruları için doldurulur.

Bir bölümü veya iki bölümü adı kullanılarak belirtildiğinde olmayan-şemaya bağlı başvuruları null.

Aynı veritabanında olmalıdır ve bu nedenle yalnızca iki parçalı kullanılarak tanımlanabilir çünkü şemaya bağlı varlıklar için null (schema.object) adı.

referenced_schema_name

sysname

Başvurulan varlık olduğu şema.

null olmayan-şemaya bağlı başvuruları, için şema adı belirtilmeden varlık başvuruldu.

Şemaya bağlı varlıkları tanımlanabilir ve iki bölümü adı kullanarak başvurulan gerekir çünkü hiçbir zaman için şemaya bağlı başvuruları null.

referenced_entity_name

sysname

Başvurulan varlıkadı.Nullable değil.

referenced_id

int

Başvurulan varlıkkimliği.

Her zaman için çapraz sunucu ve veritabanı çapraz başvuruları null.

Kimliği belirlenemiyorsa veritabanı içindeki başvuruları null.Şemaya bağlı başvuruları için kimliği aşağıdaki durumlarda çözümlenemiyor:

  • Başvurulan varlık veritabanında yok.

  • Başvurulan varlık şema arayanın şemasına bağlıdır ve çalışma saatsırasında çözümlenir.Bu durum, is_caller_dependent küme 1.

Hiçbir zaman için şemaya bağlı başvuruları null.

referenced_minor_id

int

Başvuru varlık sütunolduğunda başvurulan sütun kimliği; Aksi takdirde 0.Nullable değil.

Başvurulan varlık sütun sütun başvuru varlıkadıyla tanımlanır veya üst varlık bir select kullanılan alan * deyim.

is_caller_dependent

bit

Başvurulan varlık zamanında oluşur bu şema bağlama gösterir; Bu nedenle, arayan şemasını temel varlık kimliği çözünürlüğüne bağlıdır.Bu bir saklı yordam, genişletilmiş saklı yordam, başvurulan varlık olan veya olmayan-şemaya bağlı kullanıcı tanımlı bir işlev adı verilen bir execute deyimiçinde ortaya çıkar.

1 = Başvurulan varlık arayan bağımlı olan ve çalışma zamanında çözümlenir.Bu durum, referenced_id ise null.

0 = Başvurulan varlık kimliği arayan bağımlı değildir.

Her zaman 0 şemaya bağlı için başvuran ve, açıkça veritabanları arası ve sunucular arası başvuran için bir şema adı belirtin.Örneğin, bir varlık biçiminde başvuru EXEC MyDatabase.MySchema.MyProc değildir arayan bağımlı.Ancak, biçim başvuru EXEC MyDatabase..MyProc olan arayan bağımlı.

is_ambiguous

bit

Olan başvuru belirsiz ve çözümleme sırasında çalışma saat bir kullanıcı tanımlı işlev, bir kullanıcı tanımlı tür (UDT) veya bir xquery başvurusu bir sütun türü gösterir xml.

Örneğin, varsayalım deyim SELECT Sales.GetOrder() FROM Sales.MySales saklı yordamtanımlı.saklı yordam yürütülen kadar onu bilinmiyor olup olmadığını Sales.GetOrder() bir kullanıcı tanımlı işlev Sales şema veya sütun adlı Sales tür UDT yöntem adlı GetOrder().

1 = Başvuru belirsiz.

0 = Başvurudur belirli veya görünümü çağrıldığında varlık başarıyla bağlanabilir.

Her zaman şema 0 başvuruları bağlı.

Açıklamalar

Aşağıdaki tablo , hangi için bağımlılık bilgileri oluşturulan ve bakımını varlıkları türlerini listeler.Bağımlılık bilgilerini oluşturulan veya olmayan kuralları, varsayılanlar, geçici tablolar, geçici saklı yordamlar veya sistem nesneleri için saklanır.

Varlık türü

varlıkbaşvuran

Başvurulan varlık

Tablo

Evet *

Evet

Görünüm

Evet

Evet

Filtre uygulanmış dizin

Evet **

Hayır

Filtre uygulanmış istatistikleri

Evet **

Hayır

Transact-SQL saklı yordam***

Evet

Evet

CLR saklı yordamı

Hayır

Evet

Transact-SQLkullanıcı tanımlı işlev

Evet

Evet

clr kullanıcı tanımlı işlev

Hayır

Evet

CLR tetikleyicisi (DML ve DDL)

Hayır

Hayır

Transact-SQL DML tetikleyici

Evet

Hayır

Transact-SQL-Veritabanıdüzey DDL tetikleyici

Evet

Hayır

Transact-SQLServer -düzey DDL tetikleyici

Evet

Hayır

Genişletilmiş saklı yordamları

Hayır

Evet

Sıra

Hayır

Evet

Eşanlamlı

Hayır

Evet

Tür (diğer ad ve CLR kullanıcı tanımlı türü)

Hayır

Evet

xml şema koleksiyon

Hayır

Evet

Bölüm işlev

Hayır

Evet

* Yalnızca başvurduğu zaman tablo bir varlık başvuru olarak izlenen bir Transact-SQL modülü, kullanıcı tanımlı türveya hesaplanmış bir sütuntanımında xml şema koleksiyon DENETLEME kısıtlaması veya default kısıtlaması.

** Her sütun , filtre koşulunu içinde kullanılan bir varlıkbaşvuru olarak izlenir.

*** 1 Ya da bir başvuru veya başvurulan varlıkolarak izlenmez den büyük bir tamsayı değeri saklı yordamlarda numaralandırılmış.

Daha fazla bilgi için, bkz. sql bağımlılıklar anlama.

İzinler

Üzerinde görünüm TANIMI izni veritabanında ve select izni gerektirir sys.sql_expression_dependencies veritabanı.Varsayılan olarak, yalnızca üyeleri için select izni verilir db_owner veritabanı rolüsabit.Ne zaman seçin ve Görünüm TANIMI izin verilmiş başka bir kullanıcıya grantee veritabanındaki tüm bağımlılıkları görüntüleyebilirsiniz.

Örnekler

A.Başka bir varlıktarafından başvurulan varlıkları döndürme

Aşağıdaki örnek tablolar ve sütunlar görünümde başvurulan verir Production.vProductAndDescription.Görünüm içinde dönen varlıklar (tablolar ve sütunlar) bağlıdır referenced_entity_name ve referenced_column_name sütunlar.

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.Başka bir varlıkbaşvurusu varlıkları döndürme

Aşağıdaki örnek tablobaşvurusu varlıkları verirProduction.Product. Döndürülen varlıklar referencing_entity_name sütun bağlıdır Product tablo.

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.Veritabanları arası bağımlılıkları döndürme

Aşağıdaki örnek, tüm veritabanları arası bağımlılıkları döndürür.Veritabanı ilk örnek oluşturur db1 ve veritabanlarındaki tablolara başvuran iki saklı yordamlar db2 ve db3.sys.sql_expression_dependenciestablo yordamları ve tabloları arasında veritabanları arası bağımlılıkları bildirmek için sorgulanan sonra. null döndürülür dikkat edin referenced_schema_namebaşvurulan varlıkiçinsütun t3 çünkü bu varlık tanımında, şema adı belirtilmediyordam.

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