c.sys.sql_expression_dependencies (Transact-sql)

Geçerli veritabanında bir kullanıcı tanımlı varlık her by-name bağımlılığı için bir satır içerir. Bir varlık olarak adlandırılan iki varlık arasında bir bağımlılık oluşturulur başvurulan varlık, kalıcı bir sql ifadesi olarak adlandırılan başka bir varlığın adı görünür varlık başvuran. Bir tablo görünüm tanımında başvurulduğunda, görünüm, tablo, başvurulan varlık başvuru varlık bağlıdır. Görünüm, tablo kesilirse kullanılamaz.

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

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

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

  • Geçici veritabanı ve sunucu çapraz varlıkları. Varlık adları bildirilir; Ancak, varlık kimlikleri çözülmüş değil.

  • Sütun düzeyi bağımlılıkları şemaya bağlı varlıkları. Sütun düzeyi bağımlılıkları olmayan-şemaya bağlı nesneler kullanarak geri döndü sys.dm_sql_referenced_entities.

  • Sunucu düzeyinde ddl Tetikleyiciler bağlamında ne zaman masterveritabanı.

Sütun adı

Veri türü

Açıklama

referencing_id

int

Başvuru varlık Kımlığı. NULL değil.

referencing_minor_id

int

Başvuru varlık bir sütundur sütun kimliği; Aksi halde 0. NULL değil.

referencing_class

tinyint

Başvuru varlık sınıf.

1 = Nesne veya sütun

12 Veritabanı ddl tetikleyici =

13 Sunucu ddl tetikleyici =

NULL değil.

referencing_class_desc

nvarchar(60)

Varlık başvuran sınıf açıklaması.

OBJECT_OR_COLUMN

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER

NULL değil.

is_schema_bound_reference

bit

1 = Referansı şemaya bağlı varlıktır.

0 = Referansı olmayan-şemaya bağlı varlıktır.

NULL değil.

referenced_class

tinyint

Başvurulan varlık sınıf.

1 = Nesne veya sütun

6 = Türü

10 = xml şema koleksiyonu

21 Bölüm işlevi =

NULL değil.

referenced_class_desc

nvarchar(60)

Başvurulan varlık sınıf açıklaması.

OBJECT_OR_COLUMN

TÜRÜ

XML_SCHEMA_COLLECTION

PARTITION_FUNCTION

NULL değil.

referenced_server_name

sysname

Başvurulan varlık sunucusunun adı.

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

null olmayan-şemaya bağlı varlıklar kendisi için four-part adı belirtilmeden varlığı başvuruldu.

Çünkü onlar aynı veritabanında olmalıdır ve bu nedenle yalnızca iki parçalı kullanarak tanımlanabilir şemaya bağlı varlıklar için null (schema.object) isim.

referenced_database_name

sysname

Başvurulan varlık veritabanının adı.

Bu sütun, geçerli bir üç bölümlü veya four-part adı belirterek yapılan geçici veritabanı veya sunucu çapraz referanslar için doldurulur.

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

Çünkü onlar aynı veritabanında olmalıdır ve bu nedenle yalnızca iki parçalı kullanarak tanımlanabilir şemaya bağlı varlıklar için null (schema.object) isim.

referenced_schema_name

sysname

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

null olmayan-şemaya bağlı başvuruları hangi şema adı belirtilmeden varlığı başvuruldu.

Asla çünkü şemaya bağlı varlıkları tanımlanan ve iki bölümü adı kullanarak başvurulan şemaya bağlı başvuruları null.

referenced_entity_name

sysname

Başvurulan varlık adı. NULL değil.

referenced_id

int

Başvurulan varlık Kımlığı.

Her zaman sunucu çapraz ve geçici veritabanı başvuruları null.

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

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

  • Başvurulan varlık şema arayan şemasını bağlıdır ve çalışma zamanında çözümlenir. Bu durumda, is_caller_dependent1'e ayarlıdır.

Asla şemaya bağlı başvuruları null.

referenced_minor_id

int

Başvurulan sütun sütun başvuru varlık ne zaman kimliği; Aksi halde 0. NULL değil.

Başvurulan varlık bir sütuna başvuru varlık adı tanımlanır veya üst varlık bir select kullanılan sütundur * deyimi.

is_caller_dependent

bit

Şema bağlama için başvurulan varlık süresinde oluştuğunu gösterir; Bu nedenle, arayan şema varlık kimliği çözünürlüğüne bağlıdır. Bu saklı yordam, genişletilmiş saklı yordam, başvurulan varlık olan ya da olmayan-şemaya bağlı kullanıcı tanımlı bir işlev execute deyimi içinde ortaya çıkar.

1 = Başvurulan varlık arayan bağımlı olduğunu ve çalışma zamanında çözümlenir. Bu durumda, referenced_idnull olur.

0 = Başvurulan varlık Kımlığı değil arayan bağımlı.

Her zaman 0 şemaya bağlı başvuruları ve açıkça geçici veritabanı ve çapraz sunucu başvuran bir şema adı belirtin. Örneğin, bir varlık biçiminde başvuru EXEC MyDatabase.MySchema.MyProcArayan bağımlı değil. Ancak, başvuru biçimi EXEC MyDatabase..MyProcarayan bağlıdır.

is_ambiguous

bit

Başvuru belirsiz ve kullanıcı tanımlı bir işlev, bir kullanıcı tanımlı türü (udt) veya xquery başvuru türü sütununa çalıştırma zamanında çözebilirsiniz gösterir xml.

Örneğin, varsayalım ki deyim SELECT Sales.GetOrder() FROM Sales.MySalesbir saklı yordam tanımlanır. Saklı yordam yürütülen kadar bilinmemektedir olsun Sales.GetOrder()kullanıcı tanımlı bir işlev olduğunu Salesşema veya adlı sütun Salestürü udt adındaki bir yöntemi ile GetOrder().

1 = Başvuru belirsiz.

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

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

Açıklamalar

Aşağıdaki tabloda, kendisi için bağımlılık bilgileri oluşturulan ve saklanan varlıklar türlerini listeler. Bağımlılık bilgilerini oluşturulmaz veya kuralları, varsayılanlar, geçici tablolar, geçici saklı yordamlar veya sistem nesneleri için yapılmaktadır.

Varlık türü

Başvuru varlık

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-SQLsaklı 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 tetikleyici (dml ve ddl)

Hayır

Hayır

Transact-SQLdml tetikleyici

Evet

Hayır

Transact-SQLVeritabanı düzeyinde ddl tetikleyici

Evet

Hayır

Transact-SQLSunucu düzeyinde 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 kullanıcı tanımlı clr türü)

Hayır

Evet

xml şema koleksiyonu

Hayır

Evet

Bölüm işlevi

Hayır

Evet

* Tablo yalnızca başvurduğu bir başvuru varlık izlenir bir Transact-SQLmodülü, türü kullanıcı tanımlı veya hesaplanmış sütun, check kısıtlaması veya default kısıtlaması tanımında xml şema koleksiyonu.

** Her sütun filtre yüklemi kullanılan bir başvuru varlık izlenir.

*** Numaralandırılmış saklı yordamlar ile 1 ya da bir başvuru veya başvurulan varlık olarak izlenmez daha büyük bir tamsayı değeri.

Daha fazla bilgi için, bkz. Understanding SQL Dependencies.

İzinler

Üzerinde görünüm tanımı izni veritabanında ve select izni gerektirir sys.sql_expression_dependenciesveritabanı için. Varsayılan olarak, yalnızca üyelerine select izni verilir db_ownerveritabanı rolü. SEÇTİĞİNİZDE ve VIEW DEFINITION izinlerinden grantee veritabanındaki tüm bağımlılıkları görebilirsiniz başka bir kullanıcıya verilir.

Örnekler

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

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

USE AdventureWorks2012;
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

USE AdventureWorks2012;
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ığa başvuru varlıkları döndürme

Aşağıdaki örnek tablo başvurusu varlıkları verir Production.Product. İçinde dönen varlıklar referencing_entity_namesütun bağlı Producttablosu.

USE AdventureWorks2012;
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

USE AdventureWorks2012;
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.Geçici veritabanı bağımlılıklar döndürme

Aşağıdaki örnek, tüm geçici veritabanı bağımlılıklar verir. Örneğin ilk veritabanını oluşturur db1ve bu veritabanlarındaki tablolara başvuruda iki saklı yordamlar db2ve db3. sys.sql_expression_dependenciesTablo sonra yordamları ve tabloları arasındaki geçici veritabanı bağımlılıklar bildirmek için sorgulanan. null döndürülür dikkat referenced_schema_namesütun için başvurulan varlık t3çünkü o varlığın yordam tanımı şema adı belirtilmemiş.

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

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

Ayrıca bkz.

Başvuru

sys.dm_sql_referenced_entities (Transact-sql)

sys.dm_sql_referencing_entities (Transact-sql)

Diğer Kaynaklar

Understanding SQL Dependencies

Troubleshooting SQL Dependencies

Değişiklik Geçmişi

Güncelleştirilmiş içerik

Açıklamada, "Sütun bağımlılıkları clr tablo değerli işlevler için izlenmez" kaldırıldı Açıklamalar bölümünden.