Bagikan melalui


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.

Konvensi sintaks transact-SQL

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