Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Mevcut veritabanındaki her varlık için bir satır döner; bu varlık başka bir kullanıcı tanımlı varlığa isimle atıfta bulunur. İki varlık arasında bir bağımlılık, referans edilen varlık olarak adlandırılan bir varlık, referans varlığı olarak adlandırılan başka bir varlığın kalıcı SQL ifadesinde isimleriyle ortaya çıktığında oluşur; bu ifade referans varlık olarak adlandırılır. Örneğin, kullanıcı tanımlı bir tür (UDT) referans edilen varlık olarak belirtilmişse, bu fonksiyon tanımında o tipe isimle referans veren her kullanıcı tanımlı varlığı döndürür. Bu fonksiyon, belirtilen varlığa referans verebilecek diğer veritabanlarındaki varlıkları döndürmez. Bu fonksiyon, sunucu düzeyinde bir DDL tetikleyicisini referans varlık olarak döndürmek için ana veritabanı bağlamında çalıştırılmalıdır.
Bu dinamik yönetim fonksiyonunu kullanarak mevcut veritabanında belirtilen varlığa referans veren aşağıdaki tür varlıkları raporlayabilirsiniz:
Şema bağlı veya şema bağlı olmayan varlıklar
Veritabanı düzeyinde DDL tetikleyicileri
Sunucu düzeyinde DDL tetikleyicileri
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası), SQL Veritabanı.
Transact-SQL söz dizimi kuralları
Sözdizimi
sys.dm_sql_referencing_entities (
' schema_name.referenced_entity_name ' , ' <referenced_class> ' )
<referenced_class> ::=
{
OBJECT
| TYPE
| XML_SCHEMA_COLLECTION
| PARTITION_FUNCTION
}
Arguments
schema_name.referenced_entity_name Referans verilen varlığın adı.
schema_name başvuru konusu sınıf PARTITION_FUNCTION olduğu sürece zorunludur.
schema_name.referenced_entity_name
nvarchar(517)'dir.
<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION } Referans edilen varlığın sınıfıdır. Her ifadede yalnızca bir sınıf belirtilebilir.
<referenced_class>
nvarchar(60)'dır.
Döndürülen Tablo
| Sütun adı | Veri türü | Description |
|---|---|---|
| referencing_schema_name | sysname | Referans varlığın ait olduğu şema. Boş değer atanabilir. Veritabanı düzeyinde ve sunucu düzeyinde DDL tetikleyicileri için NULL. |
| referencing_entity_name | sysname | Referans veren varlığın adı. Null olamaz. |
| referencing_id | int | Referans veren varlığın kimliği. Null olamaz. |
| referencing_class | tinyint | Referans varlığın sınıfı. Null olamaz. 1 = Nesne 12 = Veritabanı düzeyinde DDL tetikleyicisi 13 = Sunucu düzeyinde DDL tetikleyicisi |
| referencing_class_desc | nvarchar(60) | Referans veren varlık sınıfının tanımı. OBJECT DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER |
| is_caller_dependent | bit | Referans verilen varlık kimliğinin çözümlülüğünün çalışma zamanında gerçekleştiğini gösterir çünkü bu durum çağıranın şemasına bağlıdır. 1 = Referans varlığının varlığa referans verme potansiyeli vardır; ancak referans verilen varlık kimliğinin çözümü arayanlara bağlıdır ve belirlenemez. Bu durum yalnızca EXECUTE ifadesinde çağrılan bir depolanmış prosedüre, genişletilmiş bir prosedüre veya kullanıcı tanımlı fonksiyona şema bağlı olmayan referanslar için gerçekleşir. 0 = Referans verilen varlık arayanlara bağlı değildir. |
Exceptions
Aşağıdaki koşullardan herhangi biri altında boş bir sonuç kümesi döndürür:
Bir sistem nesnesi belirtilir.
Belirtilen varlık mevcut veritabanında mevcut değildir.
Belirtilen varlık herhangi bir varlığa referans vermez.
Geçersiz bir parametre geçirilir.
Belirtilen referans varlık numaralı bir depolanmış prosedür olduğunda hata döndürür.
Açıklamalar
Aşağıdaki tablo, bağımlılık bilgisinin oluşturulduğu ve korunduğu varlık türlerini listeler. Kurallar, varsayılanlar, geçici tablolar, geçici depolanmış prosedürler veya sistem nesneleri için bağımlılık bilgisi oluşturulmaz veya korunmaz.
| Varlık türü | Referans varlığı | Referans verilen varlık |
|---|---|---|
| Tablo | Evet* | Yes |
| View | Yes | Yes |
| Transact-SQL saklanan prosedür** | Yes | Yes |
| CLR depolanmış prosedür | Hayı | Yes |
| Transact-SQL kullanıcı tanımlı fonksiyon | Yes | Yes |
| CLR kullanıcı tanımlı fonksiyon | Hayı | Yes |
| CLR tetikleyicisi (DML ve DDL) | Hayı | Hayı |
| Transact-SQL DML tetikleyicisi | Yes | Hayı |
| Transact-SQL veritabanı düzeyinde DDL tetikleyicisi | Yes | Hayı |
| Transact-SQL sunucu seviyesinde DDL tetikleyici | Yes | Hayı |
| Genişletilmiş saklı prosedürler | Hayı | Yes |
| Queue | Hayı | Yes |
| Synonym | Hayı | Yes |
| Tip (takma ad ve CLR kullanıcı tanımlı tip) | Hayı | Yes |
| XML şema koleksiyonu | Hayı | Yes |
| Bölünme fonksiyonu | Hayı | Yes |
* Bir tablo, yalnızca hesaplanan bir sütun, CHECK kısıtlaması veya DEFAULT kısıtlaması tanımında bir Transact-SQL modülüne, kullanıcı tanımlı tipe veya XML şema koleksiyonuna referans verdiğinde referans varlık olarak takip edilir.
** 1'den büyük tam sayı değeri olan numaralı saklanan prosedürler ne referans veren ne de referans alan varlık olarak takip edilmez.
Permissions
SQL Server 2008 (10.0.x) - SQL Server 2012 (11.x)
Referans edilen nesne üzerinde CONTROL izni gerektirir. Atıfta bulunulan varlık bir bölüm fonksiyonu olduğunda, veritabanında CONTROL izni gerekir.
sys.dm_sql_referencing_entities üzerinde SELECT izni gerekiyor. Varsayılan olarak, SELECT izni herkese verilir.
SQL Server 2014 (12.x) ve sonrası
Referans edilen nesne üzerinde izin gerektirmez. Kısmi sonuçlar, kullanıcının yalnızca bazı referans varlıklarında VIEW DEFINITION özelliğine sahipse geri dönebilir.
Referans varlığı bir nesne olduğunda nesne üzerinde VIEW DEFINITION gereklidir.
Referans varlığı veritabanı düzeyinde bir DDL tetikleyici olduğunda veritabanında VIEW DEFINITION gereklidir.
Referans varlığı sunucu düzeyinde bir DDL tetikleyici olduğunda sunucuda VIEW ANY DEFINITION gereklidir.
Örnekler
A. Belirli bir varlığa atıfta bulunan varlıkların geri dönmesi
Aşağıdaki örnek, mevcut veritabanındaki belirlenen tabloya atıfta bulunan varlıkları döndürür.
USE AdventureWorks2022;
GO
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('Production.Product', 'OBJECT');
GO
B. Belirli bir tipe atıfta bulunan varlıkların geri dönmesi
Aşağıdaki örnek, takma ad türüne dbo.Flagreferans veren varlıkları geri getirir. Sonuç kümesi, iki depolanmış prosedürün bu tipi kullandığını gösterir. Tip dbo.Flag , tablodaki birkaç sütunun HumanResources.Employee tanımında da kullanılır; ancak tip tablodaki hesaplanan bir sütun, CHECK kısıtlaması veya DEFAULT kısıtlaması tanımında olmadığından, tablo için satır döndürülmez HumanResources.Employee .
USE AdventureWorks2022;
GO
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('dbo.Flag', 'TYPE');
GO
Sonuç kümesi aşağıdadır.
referencing_schema_name referencing_entity_name referencing_id referencing_class_desc is_caller_dependent
----------------------- ------------------------- ------------- ---------------------- -------------------
HumanResources uspUpdateEmployeeHireInfo 1803153469 OBJECT_OR_COLUMN 0
HumanResources uspUpdateEmployeeLogin 1819153526 OBJECT_OR_COLUMN 0
(2 row(s) affected)`
Ayrıca Bkz.
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)