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:
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. |