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:
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
Ayrıca bkz.