Tampilan Kompatibilitas Sistem (Transact-SQL)
Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Banyak tabel sistem dari rilis SQL Server sebelumnya sekarang diimplementasikan sebagai serangkaian tampilan. Tampilan ini dikenal sebagai tampilan kompatibilitas, dan hanya dimaksudkan untuk kompatibilitas mundur. Tampilan kompatibilitas mengekspos metadata yang sama yang tersedia di SQL Server 2000 (8.x). Namun, tampilan kompatibilitas tidak mengekspos metadata apa pun yang terkait dengan fitur yang diperkenalkan di SQL Server 2005 (9.x) dan yang lebih baru. Oleh karena itu, ketika Anda menggunakan fitur baru, seperti Service Broker atau partisi, Anda harus beralih menggunakan tampilan katalog.
Alasan lain untuk meningkatkan ke tampilan katalog adalah bahwa kolom tampilan kompatibilitas yang menyimpan ID pengguna dan ID jenis dapat mengembalikan null atau memicu luapan aritmatika. Ini karena Anda dapat membuat lebih dari 32.767 pengguna, grup, dan peran, dan 32.767 jenis data. Misalnya, jika Anda membuat 32.768 pengguna, lalu menjalankan kueri berikut: SELECT * FROM sys.sysusers
. Jika ARITHABORT diatur ke AKTIF, kueri gagal dengan kesalahan luapan aritmatika. Jika ARITHABORT diatur ke NONAKTIF, kolom uid mengembalikan NULL.
Untuk menghindari masalah ini, kami sarankan Anda menggunakan tampilan katalog baru yang dapat menangani peningkatan jumlah ID pengguna dan ID jenis. Tabel berikut mencantumkan kolom yang tunduk pada luapan ini.
Nama kolom | Tampilan kompatibilitas | Tampilan SQL Server 2005 |
---|---|---|
xusertype | syscolumns | sys.columns |
jenis pengguna | syscolumns | sys.columns |
memberuid | sysmembers | sys.database_role_members |
groupuid | sysmembers | sys.database_role_members |
Uid | sysobjects | sys.objects |
Uid | sysprotects | sys.database_permissions sys.server_permissions |
pemberi | sysprotects | sys.database_permissions sys.server_permissions |
xusertype | systypes | sys.types |
Uid | systypes | sys.types |
Uid | sysusers | sys.database_principals |
altuid | sysusers | sys.database_principals |
gid | sysusers | sys.database_principals |
Uid | syscacheobjects | sys.dm_exec_plan_attributes |
Uid | sysprocesses | sys.dm_exec_requests |
Ketika direferensikan dalam database pengguna, tabel sistem yang diumumkan sebagai tidak digunakan lagi di SQL Server 2000 (seperti syslanguages atau syscacheobjects), sekarang terikat ke tampilan kompatibilitas kembali dalam skema sys. Karena tabel sistem SQL Server 2000 tidak digunakan lagi untuk beberapa versi, perubahan ini tidak dianggap sebagai perubahan yang melanggar.
Contoh: Jika pengguna membuat tabel pengguna yang disebut syslanguages dalam database pengguna, di SQL Server 2008, pernyataan SELECT * from dbo.syslanguages;
dalam database tersebut akan mengembalikan nilai dari tabel pengguna. Dimulai di SQL Server 2012, praktik ini akan mengembalikan data dari tampilan sistem sys.syslanguages.
Lihat Juga
Tampilan Katalog (Transact-SQL)
Memetakan Tabel Sistem ke Tampilan Sistem (Transact-SQL)