Gejala
Ketika Anda menjalankan pernyataan pembaruan kompleks bersama-sama dengan petunjuk nolock terhadap tabel di Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2, atau SQL Server 2014, korupsi indeks nonclustered mungkin terjadi. Selain itu, pesan kesalahan berikut mungkin dicatat dalam log kesalahan SQL Server:
<tanggal><waktu> spid # kesalahan: 8646, keparahan: 21, status: 1. <tanggal><waktu> SPID # tidak dapat menemukan entri indeks dalam indeks id 3, tabel 2102402659, dalam database ' <databasename> '. Indeks yang ditunjukkan rusak atau ada masalah dengan paket pembaruan saat ini. Jalankan DBCC CHECKDB atau DBCC CHECKTABLE. Jika masalah terus berlanjut, hubungi dukungan produk. <tanggal><waktu> SPID # menggunakan ' dbghelp. dll ' versi ' 4.0.5 ' <tanggal><waktu> SPID # * * dump thread-SPID = 0, EC = 0X0000000bd70624c0<tanggal><waktu> SPID # * * * stack dump sedang dikirim ke Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 tanggal><waktu> SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <tanggal><waktu> SPID # * <tanggal><waktu> SPID # * mulai tumpukan dump: <tanggal><> spid # * <tanggal><waktu> SPID # <tanggal><waktu> SPID # * <tanggal><waktu> SPID # * cperindexmetaqs:: errorabort-Indeks Korupsi><0 tanggal><waktu> SPID # * Time
Catatan Anda dapat menerapkan petunjuk Nolock ke tabel sumber dalam sebuah pernyataan. Namun, Anda tidak bisa menerapkan petunjuk Nolock untuk menargetkan tabel dalam sebuah pernyataan.
Penyebab
Masalah ini terjadi karena petunjuk Nolock menyebabkan kueri untuk membaca nilai yang salah dalam tabel saat kueri membaca nilai yang sama beberapa kali.
Pemecahan Masalah
Masalah ini pertama kali diperbaiki dalam pembaruan kumulatif SQL Server berikut ini.
Pembaruan kumulatif 1 untuk SQL Server 2014 /en-us/help/2931693
Pembaruan kumulatif 11 untuk SQL Server 2012 /en-us/help/2908007
Pembaruan kumulatif 7 untuk SQL Server 2012 SP1 /en-us/help/2894115
Pembaruan kumulatif 13 untuk SQL Server 2008 SP3 /en-us/help/2880350
Pembaruan kumulatif 9 untuk SQL Server 2008 R2 SP2 /en-us/help/2887606
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".