KB4483571 - PERBAIKI: Kemungkinan kegagalan penegasan ketika transaksi lintas database yang melibatkan database Grup Ketersediaan dilakukan dari pemicu SQL Server

Berlaku Untuk
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer Windows SQL Server 2017 Enterprise Core Windows SQL Server 2017 Enterprise Windows

Gejala

Asumsikan bahwa Anda memiliki setidaknya satu Grup Ketersediaan AlwaysOn dengan DTC_SUPPORT=PER_DB di Microsoft SQL Server 2016 atau 2017. Jika Anda menjalankan pemicu SQL Server yang berisi transaksi lintas database yang melibatkan setidaknya salah satu database Grup Ketersediaan, kegagalan pernyataan mungkin terjadi. Log kesalahan SQL Server melaporkan pesan kegagalan pernyataan berikut:

TanggalWaktu spid20s * *******************************************************************************
TanggalWaktu spid20s * MULAI TUMPUKAN DUMP:
TanggalWaktu spid20s * Lokasi: Nama File:3880
DateTime spid20s * Ekspresi: m_state == BaseXact::XACT_PREPARED || m_state == BaseXact::XACT_COMMITTED
TanggalWaktu spid20s * SPID: 20

DateTime spid20s Kesalahan: 17066, Tingkat Keparahan: 16, Negara: 1.
DateTime spid20s SQL Server Assertion: File: <FileName>, line=LineNumber Failed Assertion = 'm_state == BaseXact::XACT_PREPARED || m_state == BaseXact::XACT_COMMITTED'. Kesalahan ini mungkin terkait dengan waktu. Jika kesalahan berlanjut setelah menjalankan ulang pernyataan, gunakan DBCC CHECKDB untuk memeriksa integritas struktural database, atau mulai ulang server untuk memastikan struktur data dalam memori tidak rusak.
TanggalWaktu spid20s Kesalahan: 3624, Tingkat Keparahan: 20, Negara: 1.
DateTime spid20s Pemeriksaan afirmasi sistem telah gagal. Periksa log kesalahan SQL Server untuk detailnya. Biasanya, kegagalan pernyataan disebabkan oleh bug perangkat lunak atau kerusakan data. Untuk memeriksa kerusakan database, pertimbangkan untuk menjalankan DBCC CHECKDB. Jika Anda setuju untuk mengirim dump ke Microsoft selama penyiapan, dump mini akan dikirim ke Microsoft. Pembaruan mungkin tersedia dari Microsoft di Paket Layanan terbaru atau di Hotfix dari Dukungan Teknis.

Selain itu, Anda mungkin menerima pesan kesalahan yang menyerupai seperti berikut:

TanggalWaktu Kesalahan Server: 19407, Tingkat Keparahan: 16, Status: 1.

TanggalWaktu Server Sewa antara grup ketersediaan 'GroupName' dan Kluster Failover Windows Server telah kedaluwarsa. Terjadi masalah konektivitas antara instans SQL Server dan Kluster Failover Windows Server. Untuk menentukan apakah grup ketersediaan melakukan failover dengan benar, periksa sumber daya grup ketersediaan yang sesuai di Kluster Failover Windows Server.

Status

Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".

Resolusi

Informasi Pembaruan Kumulatif:

Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut untuk SQL Server:

Tentang pembaruan kumulatif untuk SQL Server:
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:

Informasi perbaikan sesuai permintaan:

Masalah ini telah diperbaiki dalam hotfix sesuai permintaan berikut untuk SQL Server:

Referensi

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