Gejala
Setelah menerapkan SQL Server 2016 Service Pack 3 (SP3) atau Pembaruan Kumulatif 26 (CU26) SQL Server 2017 dan Anda menjalankan prosedur pembersihan pelacakan perubahan yang disimpan, sp_flush_commit_table_on_demand atau sp_flush_CT_internal_table_on_demand, atau jika pembersihan otomatis pelacakan perubahan berjalan, Anda menerima pesan kesalahan berikut:
Msg 8114, Level 16, State 1, Procedure sp_add_ct_history, Line LineNumber
Error converting data type numeric to int.
Selain itu, kesalahan berikut mungkin masuk dalam SQL Server log kesalahan:
DateTime spidNum Error: 22122, Severity: 16, State: 1.
DateTime spidNum Change Tracking autocleanup failed on side table of "table_name". If the failure persists, use sp_flush_CT_internal_table_on_demand to clean up expired records from its side table.
Setelah menemui kesalahan ini, pembersihan otomatis pelacakan perubahan tidak dapat membersihkan entri dari tabel samping atau tabel syscommittab.
Penyebab
SQL Server 2016 SP3 dan SQL Server 2017 CU26 memperkenalkan tabel baru, dbo. MSchange_tracking_history, dan prosedur yang baru disimpan, sys.sp_add_ct_history, untuk merekam riwayat pembersihan pelacakan perubahan. Tabel ini memiliki kolom, cleanup_version, yang saat ini dideklarasikan sebagai tipedata INT. Prosedur sys.sp_add_ct_history yang disimpan memiliki parameter, @cleanup_version, yang juga dideklarasikan sebagai INT. Pada sistem sibuk yang menggunakan pelacakan perubahan, versi pembersihan bisa melewati rentang INT dalam interval tertentu. Lalu, saat pembersihan pelacakan perubahan berjalan, pembersihan akan mencoba menyisipkan nilai BIGINT ke kolom INT tabel ini. Hal ini akan menghasilkan kesalahan yang dijelaskan di bagian "Gejala".
Pemecahan Masalah
Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut ini untuk SQL Server:
Pembaruan Kumulatif 27 untuk SQL Server 2017
Setiap pembaruan kumulatif baru untuk SQL Server hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Periksa pembaruan kumulatif terbaru untuk SQL Server:
Informasi hotfix sesuai permintaan:
Masalah ini telah diperbaiki dalam hotfix sesuai permintaan berikut ini untuk SQL Server:
Penyelesaian Masalah
Jika Anda menghadapi masalah ini, kembali ke build sebelumnya dengan menghapus SQL Server 2016 SP3 atau SQL Server CU26 2017. Microsoft sedang menyelidiki masalah ini, dan akan memperbarui artikel ini dengan informasi selengkapnya dan panduan tambahan saat informasi tersebut tersedia.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".
Referensi
Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.