sys.dm_sql_referenced_entities (Transact-sql)

Kullanıcı tanımlı ad tanımında belirtilen başvuru varlık tarafından başvurulan her varlık için bir satır döndürür. Kullanıcı tanımlı 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 kullanıcı tarafından tanımlanan varlık adı görünür varlık başvuran. Örneğin, bir saklı yordam belirtilen başvuru varlık ise, bu işlevi başvurulan kullanıcı tanımlı tüm varlıklar gibi tabloları, görünümleri, kullanıcı tanımlı türler (UDTs), saklı yordam döndürür veya diğer saklı yordamlar.

Belirtilen başvuru varlık tarafından başvurulan varlıkları aşağıdaki türlerde rapor için bu dinamik yönetimi işlevini kullanabilirsiniz:

  • Şemaya bağlı varlıklar

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

  • Geçici veritabanı ve sunucu çapraz varlıkları

  • Sütun düzeyi bağımlılıkları şemaya bağlı ve olmayan-şemaya bağlı varlıklar

  • Kullanıcı tanımlı türler (diğer ad ve clr udt)

  • xml şema koleksiyonları

  • Bölüm işlevleri

Sözdizimi

sys.dm_sql_referenced_entities (
    ' [ schema_name. ] referencing_entity_name ' , ' <referencing_class> ' )

<referencing_class> ::=
{
    OBJECT
  | DATABASE_DDL_TRIGGER
  | SERVER_DDL_TRIGGER
}

Bağımsız değişkenler

  • [ schema_name. ] referencing_entity_name
    Başvuru varlık addır. schema_namebaşvuru sınıf nesnesi olduğunda gereklidir.

    schema_name.referencing_entity_nameis nvarchar(517).

  • <referencing_class>::= { OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER}
    Belirtilen sınıf varlık başvuran. Yalnızca bir sınıf deyimi belirtilebilir.

    <referencing_class>is nvarchar(60).

Dönen Tablo

Sütun adı

Veri türü

Açıklama

referencing_minor_id

int

Başvuru varlık bir sütundur sütun kimliği; Aksi halde 0. 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ı bağımlılı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 şemaya bağlı başvuruları null.

referenced_entity_name

sysname

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

referenced_minor_name

sysname

Başvurulan varlık bir sütun olduğunda sütun adı; Aksi halde null. Örneğin, referenced_minor_namebaşvurulan varlık listelendiği satır null olur.

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.

referenced_id

int

Başvurulan varlık Kımlığı. Ne zaman referenced_minor_idolduğunu değil 0, referenced_idsütun tanımlı varlıktır.

Her zaman sunucu çapraz başvuruları null.

null olduğunda veritabanı çevrimdışı olduğundan kimliği belirlenemedi geçici veritabanı başvuruları veya varlık bağlanamaz.

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.

  • Ad çözümlemesi arayan bağımlı olduğunu. Bu durumda, is_caller_dependent1'e ayarlıdır.

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

referenced_minor_id

int

Başvurulan varlık bir sütundur sütun kimliği; durumda, 0. Örneğin, referenced_minor_isbaşvurulan varlık listelendiği sırada 0.

Ne zaman yalnızca tüm başvurulan varlıkları bağlanabilir olmayan-şemaya bağlı başvuruları için Sütun bağımlılıkları bildirilir. Başvurulan herhangi bir varlık bağlı olamaz, hiçbir sütun düzeyi bağımlılıkları bildirilir ve referenced_minor_id0. Bakın örnek ö.

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 =

referenced_class_desc

nvarchar(60)

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

OBJECT_OR_COLUMN

TÜRÜ

XML_SCHEMA_COLLECTION

PARTITION_FUNCTION

is_caller_dependent

bit

Şema bağlama için başvurulan varlık zamanında meydana gösterir; Bu nedenle, arayan şema varlık kimliği çözünürlüğüne bağlıdır. Başvurulan varlık bir saklı yordam, genişletilmiş saklı yordam veya kullanıcı tanımlı işlev execute deyimi içinde denilen bu oluşur.

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, deyimi kabul 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 bir kullanıcı tanımlı işlev veya sütun kullanıcı tanımlı türü için (udt) yöntemi belirsizdir.

0 = Başvurudur benzersiz veya işlev çağrıldığında varlığı başarıyla bağlanabilir.

Şemaya bağlı başvuruları her zaman 0.

is_selected

bit

1 = Nesne veya sütun seçili.

is_updated

bit

1 = Nesne veya sütun.

is_select_all

bit

1 = Nesne bir select kullanılan * yan tümcesi (yalnızca nesne düzeyi).

is_all_columns_found

bit

1 = Tüm sütun bağımlılıkları için nesne bulunamadı.

0 = Sütun bağımlılıkları için nesne bulunamadı.

Kural dışı durumlar

Aşağıdaki koşullardan herhangi biri altında ayarlamak boş bir sonuç döndürür:

  • Sistem nesnesi belirtilir.

  • Belirtilen varlık geçerli veritabanında yok.

  • Belirtilen varlık, tüm varlıkları başvurmuyor.

  • Geçersiz bir parametre geçirildi.

Belirtilen başvuru varlık numaralandırılmış bir saklı yordamı bir hata döndürür.

Hata olduğunda sütun bağımlılıkları çözümlenemeyen 2020 döndürür. Bu hata, nesne düzeyi bağımlılıkları döndürme sorgu engellemez. Daha fazla bilgi için, bkz. Troubleshooting SQL Dependencies.

Açıklamalar

Bu başvuru sunucu düzeyinde ddl tetikleyici varlıkları dönmek için herhangi bir veritabanı bağlamında bu işlev çalıştırılır.

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

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.

** 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 select izni gerektirir sys.dm_sql_referenced_entitiesve başvuru varlık tanımını izni. Varsayılan olarak, için select izni verilir public. Başvuru varlık veritabanı düzeyinde ddl tetikleyici olduğunda veritabanı üzerinde görünüm tanımı izni veya veritabanı ddl TETIKLEYICI alter veritabanı izni gerektirir. Başvuru varlık sunucu düzeyinde ddl tetikleyici olduğunda sunucu üzerinde görünüm tanımı HIÇBIR izni gerektirir.

Örnekler

A.Veritabanı düzeyinde ddl tetikleyici tarafından başvurulan varlıkları döndürme

Aşağıdaki örnek veritabanı düzeyinde ddl tetikleyici tarafından başvurulan varlıkları (tablolar ve sütunlar) verir ddlDatabaseTriggerLog.

USE AdventureWorks2012;
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.Bir nesne tarafından başvurulan varlıkları döndürme

Aşağıdaki örnek kullanıcı tanımlı işlevi tarafından başvurulan varlıkları verir dbo.ufnGetContactInformation.

USE AdventureWorks2012;
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.Sütun bağımlılıkları döndürme

Aşağıdaki örnek tablo oluşturur Table1ile hesaplanan sütun csütun toplamı olarak tanımlanan ave b. sys.dm_sql_referenced_entitiesGörünümü sonra çağırdı. Görünüm, hesaplanan sütun tanımlanan her sütun için iki satır döndürür.

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

Sonuç kümesi buradadır.

schema_name table_name referenced_column referencing_column

----------- ---------- ----------------- ------------------

dbo         Table1     a                 c

dbo         Table1     b                 c

D.Şema-bağlı olmayan sütun bağımlılıkları döndürme

Aşağıdaki örnek Table1ve Table2ve saklı yordam Proc1. Prosedürü referanslar Table2varolmayan tablo Table1. Görünüm sys.dm_sql_referenced_entitiesbaşvuru varlık belirtilen saklı yordamı çalıştırın. Sonuç kümesi için bir satır gösterir Table1ve 3 satır için Table2. Çünkü Table1yok, Sütun bağımlılıkları çözümlenemeyen ve döndürülen hata 2020. is_all_columns_found0 Sütun döndürür Table1değil keşfedilen sütun olduğunu bildiren.

USE AdventureWorks2012;
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, is_all_columns_found
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO

Sonuç kümesi buradadır.

referenced_id table_name   referenced_column_name  is_all_columns_found

------------- ------------ ----------------------- --------------------

935674381     Table2       NULL                    1

935674381     Table2       C1                      1

935674381     Table2       C2                      1

NULL          Table1       NULL                    0

Msg 2020, Level 16, State 1, Line 1The dependencies reported for entity "dbo.Proc1" might not include references to all columns. This is either because the entity references an object that does not exist or because of an error in one or more statements in the entity. Before rerunning the query, ensure that there are no errors in the entity and that all objects referenced by the entity exist.

E.Dinamik bağımlılık bakım gösteren

Aşağıdaki örnek, örnek bağımlılıkları dinamik olarak tutulan göstermek için d genişletir. İlk örnek oluşturur Table1, hangi örnek d. çıkarıldı Sonra sys.dm_sql_referenced_entitiesyeniden başvuru varlık belirtilen saklı yordamı çalıştırın. Sonuç kümesi gösterir tablolar ve saklı yordam tanımlanan kendi ilgili sütunları döndürülür. Ayrıca, is_all_columns_foundsütun döndürür tüm nesneler ve sütunlar için 1.

USE AdventureWorks2012;
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, is_all_columns_found
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO
DROP TABLE Table1, Table2;
DROP PROC Proc1;
GO

Sonuç kümesi buradadır.

referenced_id table_name   referenced_column_name  is_all_columns_found

------------- ------------ ----------------------- --------------------

935674381     Table2       NULL                    1

935674381     Table2       c1                      1

935674381     Table2       c2                      1

967674495     Table1       NULL                    1

967674495     Table1       a                       1

967674495     Table1       b                       1

967674495     Table1       c                       1

F.Geri dönen nesne veya sütun kullanımı

Aşağıdaki örnek verir nesneleri ve sütun bağımlılıkları saklı yordam HumanResources.uspUpdateEmployeePersonalInfo. Bu yordam güncelleştirmeleri sütunları NationalIDNumber, BirthDate, MaritalStatus, ve Gender, Employeetablosu üzerinde belirtilen temel BusinessEntityIDdeğer. Başka bir saklı yordam upsLogErrortanımlı bir try…Yürütme hataları yakalamak için catch bloğu. is_selected, is_updated, Ve is_select_allsütunları bu nesneleri ve sütunları başvuru nesnesi içinde nasıl kullanıldığı hakkında bilgi dönmek. Tablo ve değiştirilmesi sütun 1 is_updated sütununda belirtilir. BusinessEntityIDSütun yalnızca seçili ve saklı yordam uspLogErrorne seçilen ne güncellenmiştir.

SELECT referenced_entity_name AS table_name, referenced_minor_name as column_name, is_selected, is_updated, is_select_all
FROM sys.dm_sql_referenced_entities ('HumanResources.uspUpdateEmployeePersonalInfo', 'OBJECT');

Sonuç kümesi buradadır.

table_name    column_name         is_selected is_updated is_select_all

------------- ------------------- ----------- ---------- -------------

uspLogError   NULL                0           0          0

Employee      NULL                0           1          0

Employee      BusinessEntityID    1           0          0

Employee      NationalIDNumber    0           1          0

Employee      BirthDate           0           1          0

Employee      MaritalStatus       0           1          0

Employee      Gender              0           1          0

Ayrıca bkz.

Başvuru

sys.dm_sql_referencing_entities (Transact-sql)

c.sys.sql_expression_dependencies (Transact-sql)