sys.dm_db_uncontained_entities (T-SQL)
Berlaku untuk: SQL Server
Memperlihatkan objek yang tidak terkontainer yang digunakan dalam database. Objek yang tidak dikontainasi adalah objek yang melewati batas database dalam database yang terkandung. Tampilan ini dapat diakses dari database mandiri dan database yang tidak terkandung. Jika sys.dm_db_uncontained_entities kosong, database Anda tidak menggunakan entitas yang tidak dikontainer.
Jika modul melewati batas database lebih dari sekali, hanya persimpangan pertama yang ditemukan yang dilaporkan.
Nama kolom | Jenis | Keterangan |
---|---|---|
kelas | int | 1 = Objek atau kolom (termasuk modul, XP, tampilan, sinonim, dan tabel). 4 = Prinsipal Database 5 = Rakitan 6 = Jenis 7 = Indeks (Indeks Teks lengkap) 12 = Pemicu DDL Database 19 = Rute 30 = Spesifikasi Audit |
class_desc | nvarchar(120) | Deskripsi kelas entitas. Salah satu hal berikut untuk mencocokkan kelas: OBJECT_OR_COLUMN DATABASE_PRINCIPAL MAJELIS KETIK INDEX DATABASE_DDL_TRIGGER RUTE AUDIT_SPECIFICATION |
major_id | int | ID entitas. Jika kelas = 1, maka object_id Jika kelas = 4, maka sys.database_principals.principal_id. Jika kelas = 5, maka sys.assemblies.assembly_id. Jika kelas = 6, maka sys.types.user_type_id. Jika kelas = 7, maka sys.indexes.index_id. Jika kelas = 12, maka sys.triggers.object_id. Jika kelas = 19, maka sys.routes.route_id. Jika kelas = 30, maka sys. database_audit_specifications.database_specification_id. |
statement_line_number | int | Jika kelas adalah modul, mengembalikan nomor baris tempat penggunaan yang tidak dipastikan berada. Jika tidak, nilainya null. |
statement_ offset_begin | int | Jika kelas adalah modul, menunjukkan, dalam byte, dimulai dengan 0, posisi awal di mana penggunaan yang tidak dipastikan dimulai. Jika tidak, nilai yang dikembalikan null. |
statement_ offset_end | int | Jika kelas adalah modul, menunjukkan, dalam byte, dimulai dengan 0, posisi akhir penggunaan yang tidak dikontainer. Nilai -1 menunjukkan akhir modul. Jika tidak, nilai yang dikembalikan null. |
statement_type | nvarchar(512) | Jenis pernyataan. |
nama feature_ | nvarchar(256) | Mengembalikan nama eksternal objek. |
feature_type_name | nvarchar(256) | Mengembalikan jenis fitur. |
Keterangan
sys.dm_db_uncontained_entities menunjukkan entitas tersebut yang berpotensi melewati batas database. Ini akan mengembalikan entitas pengguna apa pun yang berpotensi menggunakan objek di luar database.
Jenis fitur berikut dilaporkan.
Perilaku penahanan tidak diketahui (resolusi SQL dinamis atau nama yang ditangguhkan)
Perintah DBCC
Prosedur tersimpan sistem
Fungsi skalar sistem
Fungsi bernilai tabel sistem
Fungsi bawaan sistem
Keamanan
Izin
sys.dm_db_uncontained_entities hanya mengembalikan objek yang penggunanya memiliki beberapa jenis izin. Untuk sepenuhnya mengevaluasi penahanan database, fungsi ini harus digunakan oleh pengguna dengan hak istimewa tinggi seperti anggota peran server tetap sysadmin atau peran db_owner .
Contoh
Contoh berikut membuat prosedur bernama P1, lalu kueri sys.dm_db_uncontained_entities
. Kueri melaporkan bahwa P1 menggunakan sys.endpoints yang berada di luar database.
CREATE DATABASE Test;
GO
USE Test;
GO
CREATE PROC P1
AS
SELECT * FROM sys.endpoints ;
GO
SELECT SO.name, UE.* FROM sys.dm_db_uncontained_entities AS UE
LEFT JOIN sys.objects AS SO
ON UE.major_id = SO.object_id;