sys.dm_sql_referencing_entities (T-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Mengembalikan satu baris untuk setiap entitas dalam database saat ini yang mereferensikan entitas lain yang ditentukan pengguna berdasarkan nama. Dependensi antara dua entitas dibuat ketika satu entitas, yang disebut entitas yang direferensikan, muncul berdasarkan nama dalam ekspresi SQL yang bertahan dari entitas lain, yang disebut entitas referensi. Misalnya, jika jenis yang ditentukan pengguna (UDT) ditentukan sebagai entitas yang dirujuk, fungsi ini mengembalikan setiap entitas yang ditentukan pengguna yang mereferensikan jenis berdasarkan nama dalam definisinya. Fungsi ini tidak mengembalikan entitas dalam database lain yang dapat mereferensikan entitas yang ditentukan. Fungsi ini harus dijalankan dalam konteks database master untuk mengembalikan pemicu DDL tingkat server sebagai entitas referensi.
Anda dapat menggunakan fungsi manajemen dinamis ini untuk melaporkan jenis entitas berikut dalam database saat ini yang mereferensikan entitas yang ditentukan:
Entitas terikat skema atau tidak terikat skema
Pemicu DDL tingkat database
Pemicu DDL tingkat server
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru), SQL Database.
Sintaks
sys.dm_sql_referencing_entities (
' schema_name.referenced_entity_name ' , ' <referenced_class> ' )
<referenced_class> ::=
{
OBJECT
| TYPE
| XML_SCHEMA_COLLECTION
| PARTITION_FUNCTION
}
Argumen
schema_name.referenced_entity_name
Adalah nama entitas yang dirujuk.
schema_name
diperlukan kecuali ketika kelas yang dirujuk PARTITION_FUNCTION.
schema_name.referenced_entity_name
adalah nvarchar(517).
<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
Adalah kelas entitas yang dirujuk. Hanya satu kelas yang dapat ditentukan per pernyataan.
<referenced_class>
adalah nvarchar(60).
Tabel Dikembalikan
Nama kolom | Jenis data | Deskripsi |
---|---|---|
referencing_schema_name | nama sysname | Skema tempat entitas referensi berada. Dapat diubah ke null. NULL untuk pemicu DDL tingkat database dan tingkat server. |
referencing_entity_name | nama sysname | Nama entitas referensi. Tidak dapat diubah ke null. |
referencing_id | int | ID entitas referensi. Tidak dapat diubah ke null. |
referencing_class | kecil | Kelas entitas referensi. Tidak dapat diubah ke null. 1 = Objek 12 = Pemicu DDL tingkat database 13 = Pemicu DDL tingkat server |
referencing_class_desc | nvarchar(60) | Deskripsi kelas entitas referensi. OBJECT DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER |
is_caller_dependent | bit | Menunjukkan resolusi ID entitas yang dirujuk terjadi pada waktu proses karena bergantung pada skema pemanggil. 1 = Entitas referensi memiliki potensi untuk mereferensikan entitas; namun, resolusi ID entitas yang dirujuk bergantung pada pemanggil dan tidak dapat ditentukan. Ini hanya terjadi untuk referensi yang tidak terikat skema ke prosedur tersimpan, prosedur tersimpan yang diperluas, atau fungsi yang ditentukan pengguna yang disebut dalam pernyataan EXECUTE. 0 = Entitas yang dirujuk bukan dependen penelepon. |
Pengecualian
Mengembalikan tataan hasil kosong di bawah salah satu kondisi berikut:
Objek sistem ditentukan.
Entitas yang ditentukan tidak ada di database saat ini.
Entitas yang ditentukan tidak mereferensikan entitas apa pun.
Parameter yang tidak valid diteruskan.
Mengembalikan kesalahan ketika entitas yang direferensikan yang ditentukan adalah prosedur tersimpan bernomor.
Keterangan
Tabel berikut mencantumkan jenis entitas yang informasi dependensinya dibuat dan dikelola. Informasi dependensi tidak dibuat atau dikelola untuk aturan, default, tabel sementara, prosedur tersimpan sementara, atau objek sistem.
Jenis entitas | Entitas referensi | Entitas yang dirujuk |
---|---|---|
Tabel | Ya* | Ya |
Tampilan | Ya | Ya |
Prosedur tersimpan T-SQL** | Ya | Ya |
Prosedur tersimpan CLR | Tidak | Ya |
Fungsi yang ditentukan pengguna Transact-SQL | Ya | Ya |
Fungsi yang ditentukan pengguna CLR | Tidak | Ya |
Pemicu CLR (DML dan DDL) | Tidak | Tidak |
Pemicu DML T-SQL | Ya | Tidak |
Pemicu DDL tingkat database Transact-SQL | Ya | Tidak |
Pemicu DDL tingkat server Transact-SQL | Ya | Tidak |
Prosedur tersimpan diperpanjang | Tidak | Ya |
Antrean | Tidak | Ya |
Sinonim | Tidak | Ya |
Jenis (alias dan jenis yang ditentukan pengguna CLR) | Tidak | Ya |
Koleksi skema XML | Tidak | Ya |
Fungsi partisi | Tidak | Ya |
* Tabel dilacak sebagai entitas referensi hanya ketika mereferensikan modul Transact-SQL, jenis yang ditentukan pengguna, atau koleksi skema XML dalam definisi kolom komputasi, batasan CHECK, atau batasan DEFAULT.
** Prosedur tersimpan bernomor dengan nilai bilangan bulat yang lebih besar dari 1 tidak dilacak sebagai entitas referensi atau referensi.
Izin
SQL Server 2008 (10.0.x) - SQL Server 2012 (11.x)
Memerlukan izin CONTROL pada objek yang dirujuk. Ketika entitas yang dirujuk adalah fungsi partisi, izin CONTROL pada database diperlukan.
Memerlukan izin SELECT pada sys.dm_sql_referencing_entities. Secara default, izin SELECT diberikan kepada publik.
SQL Server 2014 (12.x) dan yang lebih baru
Tidak memerlukan izin pada objek yang dirujuk. Hasil parsial dapat dikembalikan jika pengguna memiliki VIEW DEFINITION hanya pada beberapa entitas referensi.
Memerlukan DEFINISI TAMPILAN pada objek saat entitas referensi adalah objek.
Memerlukan VIEW DEFINITION pada database saat entitas referensi adalah pemicu DDL tingkat database.
Memerlukan LIHAT DEFINISI APA PUN di server saat entitas referensi adalah pemicu DDL tingkat server.
Contoh
J. Mengembalikan entitas yang merujuk ke entitas tertentu
Contoh berikut mengembalikan entitas dalam database saat ini yang merujuk ke tabel yang ditentukan.
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. Mengembalikan entitas yang merujuk ke jenis tertentu
Contoh berikut mengembalikan entitas yang mereferensikan jenis dbo.Flag
alias . Kumpulan hasil menunjukkan bahwa dua prosedur tersimpan menggunakan jenis ini. Jenis dbo.Flag
ini juga digunakan dalam definisi beberapa kolom dalam HumanResources.Employee
tabel; namun, karena jenisnya tidak dalam definisi kolom komputasi, batasan CHECK, atau batasan DEFAULT dalam tabel, tidak ada baris yang dikembalikan untuk HumanResources.Employee
tabel.
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
Berikut set hasilnya.
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)`
Lihat Juga
sys.dm_sql_referenced_entities (T-SQL)
sys.sql_expression_dependencies (Transact-SQL)