Gejala

Saat Anda menjalankan pembaruan pada tabel yang memiliki indeks tergugus atau unik dan pembaruan terjadi pada kolom unik non-utama, rekaman pelacakan perubahan tidak konsisten dengan pernyataan pembaruan.

Misalnya, anggaplah bahwa kolom yang bernama "kolom1" disertakan dalam indeks tergugus atau unik. Ketika nilai kolom diubah dari yang lebih besar menjadi nilai yang lebih kecil (seperti mengubah nilai dari 20 ke 16), tabel sisi pelacakan perubahan menerima operasi sisipkan sebelum operasi penghapusan. Misalnya, operasi sisipkan catatan baris log transaksi diterima sebelum operasi hapus baris, atau "I" disisipkan sebelum "D."

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1116

19

I

NULL

NULL

5639485628

1116

20

D

NULL

NULL

5639485628


Ketika nilai kolom diubah dari yang lebih kecil menjadi nilai yang lebih besar (seperti mengubah nilai dari 16 menjadi 20), "D" disisipkan sebelum "I."

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1126

32

D

NULL

NULL

5639485628

1126

33

I

NULL

NULL

5639485628

Penyebab

Masalah ini terjadi karena pengurutan yang salah antara pasangan hapus/sisipkan dalam tabel sisi pelacakan perubahan.

Pemecahan Masalah

Perbaikan untuk masalah ini disertakan dalam pembaruan berikut untuk SQL Server:

         Pembaruan Kumulatif 8 untuk SQL Server 2017

         Pembaruan Kumulatif 9 untuk SQL Server 2016 Paket Layanan 1

Pembaruan Kumulatif 12 untuk SQL Server 2014 SP2

Tentang build SQL Server

Setiap build baru untuk SQL Server berisi semua perbaikan keamanan dan hotfix yang ada di build sebelumnya. Kami menyarankan agar Anda menginstal build terbaru untuk SQL Server:

Pembaruan kumulatif terbaru untuk SQL Server 2017

build terbaru untuk SQL Server 2016

Pembaruan kumulatif terbaru untuk SQL Server 2014

Status

Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".

Informasi selengkapnya

Untuk tabel yang diaktifkan pelacakan perubahan, ketika pembaruan terjadi pada kolom non-utama yang ditentukan unik, dua entri disisipkan ke tabel sisi pelacakan perubahan: Satu entri untuk setiap tindakan terpisah, Sisipkan dan Hapus.

Ketika fungsi CHANGETABLE dipanggil untuk menghitung perubahan, entri ini diurutkan menurut nilai kunci utama, lalu operasi diagregat. Jika pembaruan menyisipkan nilai yang lebih rendah, operasi "I" dijalankan di tabel samping terlebih dahulu, diikuti dengan operasi "D". Hal ini menyebabkan operasi yang salah dikembalikan untuk baris ini. Ini karena "I" diikuti "D" diagregat sebagai "D."

Karena hanya nilai kunci utama yang dipertahankan dalam tabel samping, tidak perlu memiliki dua entri terpisah. Hal ini berlaku selama kolom kunci utama tidak diperbarui.

Masalah ini telah diperbaiki untuk kolom unik non-utama. Dalam hal ini, ketika pembaruan terjadi, hanya satu baris yang disisipkan dengan memiliki "U" sebagai operasi pembaruan, bukan dua entri yang memiliki "D" dan "I."

Referensi

Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?

Terima kasih atas umpan balik Anda!

×