Tampilan Kompatibilitas Sistem (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung)

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
grantor 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 SQL Server 2000 tabel sistem 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. Mulai 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)