Data Spasial - sys.dm_db_objects_disabled_on_compatibility_level_change
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Mencantumkan indeks dan batasan yang akan dinonaktifkan sebagai akibat dari perubahan tingkat kompatibilitas di SQL Server. Indeks dan batasan yang berisi kolom komputasi yang dipertahankan yang ekspresinya menggunakan UDT spasial akan dinonaktifkan setelah meningkatkan atau mengubah tingkat kompatibilitas. Gunakan fungsi manajemen dinamis ini untuk menentukan dampak perubahan tingkat kompatibilitas.
Sintaks
sys.dm_db_objects_disabled_on_compatibility_level_change ( compatibility_level )
Argumen
compatibility_level
int yang mengidentifikasi tingkat kompatibilitas yang Anda rencanakan untuk diatur.
Tabel Dikembalikan
Nama kolom | Jenis data | Deskripsi |
---|---|---|
kelas | int | 1 = batasan 7 = indeks dan timbunan |
class_desc | nvarchar(60) | OBJECT atau COLUMN untuk batasan INDEKS untuk indeks dan timbunan |
major_id | int | ID OBJEK batasan ID OBJEK tabel yang berisi indeks dan timbunan |
minor_id | int | NULL untuk batasan Index_id untuk indeks dan timbunan |
Ketergantungan | nvarchar(60) | Deskripsi dependensi yang menyebabkan batasan atau indeks dinonaktifkan. Nilai yang sama juga digunakan dalam peringatan yang dinaikkan selama peningkatan. Contohnya termasuk berikut ini: "spasi" untuk intrinsik "geometri" untuk UDT sistem "geografi::P arse" untuk metode UDT sistem |
Keterangan Umum
Kolom komputasi yang dipertahankan yang menggunakan beberapa fungsi intrinsik dinonaktifkan saat tingkat kompatibilitas diubah. Selain itu, kolom komputasi yang dipertahankan yang menggunakan metode Geometri atau Geografi dinonaktifkan saat database ditingkatkan.
Fungsi mana yang menyebabkan kolom komputasi yang dipertahankan dinonaktifkan?
Saat fungsi berikut digunakan dalam ekspresi kolom komputasi yang dipertahankan, fungsi tersebut menyebabkan indeks dan batasan yang mereferensikan kolom tersebut dinonaktifkan saat tingkat kompatibilitas diubah dari 80 menjadi 90:
- IsNumeric
Saat fungsi berikut digunakan dalam ekspresi kolom komputasi yang dipertahankan, fungsi tersebut menyebabkan indeks dan batasan yang mereferensikan kolom tersebut dinonaktifkan saat tingkat kompatibilitas diubah dari 100 menjadi 110 atau lebih tinggi:
Soundex
Geografi:: GeomFromGML
Geografi:: STGeomFromText
Geografi:: STLineFromText
Geografi:: STPolyFromText
Geografi:: STMPointFromText
Geografi:: STMLineFromText
Geografi:: STMPolyFromText
Geografi:: STGeomCollFromText
Geografi:: STGeomFromWKB
Geografi:: STLineFromWKB
Geografi:: STPolyFromWKB
Geografi:: STMPointFromWKB
Geografi:: STMLineFromWKB
Geografi:: STMPolyFromWKB
Geografi:: STUnion
Geografi:: STIntersection
Geografi:: STDifference
Geografi:: STSymDifference
Geografi:: STBuffer
Geografi:: BufferWithTolerance
Geografi:: Uraikan
Geografi:: Kurangi
Perilaku objek yang dinonaktifkan
Indeks
Jika indeks berkluster dinonaktifkan, atau jika indeks non-kluster dipaksakan, kesalahan berikut muncul: "Prosesor kueri tidak dapat menghasilkan rencana karena indeks '%.*ls' pada tabel atau tampilan '%.*ls' dinonaktifkan." Untuk mengaktifkan kembali objek ini, bangun ulang indeks setelah peningkatan dengan memanggil ALTER INDEX ON ... BANGUN KEMBALI.
Tumpukan
Jika tabel dengan tumpukan yang dinonaktifkan digunakan, kesalahan berikut akan muncul. Untuk mengaktifkan kembali objek ini, bangun kembali setelah peningkatan dengan memanggil ALTER INDEX ALL ON ... BANGUN KEMBALI.
// ErrorNumber: 8674
// ErrorSeverity: EX_USER
// ErrorFormat: The query processor is unable to produce a plan because the table or view '%.*ls' is disabled.
// ErrorCause: The table has a disabled heap.
// ErrorCorrectiveAction: Rebuild the disabled heap to enable it.
// ErrorInserts: table or view name
// ErrorOwner: mtintor
// ErrorFirstProduct: SQL11
Jika Anda mencoba membangun kembali tumpukan selama operasi online, kesalahan akan muncul.
Periksa Batasan dan Kunci Asing
Batasan pemeriksaan yang dinonaktifkan dan kunci asing tidak menimbulkan kesalahan. Namun, batasan tidak diberlakukan saat baris dimodifikasi. Untuk mengaktifkan kembali objek ini, periksa batasan setelah memutakhirkan dengan memanggil ALTER TABLE ... PERIKSA BATASAN.
Kolom Komputasi Yang Dipertahankan
Karena tidak dimungkinkan untuk menonaktifkan satu kolom, seluruh tabel dinonaktifkan dengan menonaktifkan indeks atau timbunan berkluster.
Keamanan
Izin
Memerlukan izin TAMPILKAN STATUS DATABASE.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin TAMPILKAN STATUS PERFORMA DATABASE pada database.
Contoh
Contoh berikut menunjukkan kueri di sys.dm_db_objects_disabled_on_compatibility_level_change untuk menemukan objek yang terpengaruh dengan mengubah tingkat kompatibilitas menjadi 120.
SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);
GO