Gejala
Pertimbangkan skenario berikut:
Anda menjalankan Microsoft SQL Server 2014 atau Microsoft SQL Server 2012 Paket 2 (SP2) di server yang menghosting replika sekunder grup ketersediaan sebagai bagian dari peningkatan bergulir.
Anda telah menerapkan salah satu pembaruan berikut pada penginstalan SQL Server:
- Pembaruan Kumulatif SQL Server 2014 5
- SQL Server 2012 Paket Layanan 2 Pembaruan Kumulatif 4
- SQL Server 2012 Paket Layanan 2 Pembaruan Kumulatif 3
Penting: Hotfix yang disebutkan dalam artikel ini menggantikan pembaruan kumulatif ini. Jangan instal pembaruan ini jika Anda belum melakukannya.
Untuk menyelesaikan penginstalan pembaruan kumulatif, mulai ulang replika sekunder ini.
Anda melakukan failover pada grup ketersediaan yang sedang mengalihkan replika sekunder yang diperbarui ke peran utama.
Dalam skenario ini, Anda mungkin mengalami satu atau beberapa gejala berikut di server yang menjalankan SQL Server dan yang sekarang menghosting replika utama grup ketersediaan Anda:
Replika sekunder dilaporkan sebagai "TIDAK SINKRONISASI."
Saat mengkueri sys.dm_exec_requests, Anda melihat pemblokiran kunci terputus-putus antara sesi pengguna dan sesi yang perintahnya dilaporkan sebagai "DB_STARTUP." Anda mungkin juga melihat pemblokiran antara perintah CHECKPOINT dan DB_STARTUP.
Kebuntuan yang melibatkan sesi yang memulihkan salah satu database ketersediaan Anda dilaporkan dalam log kesalahan SQL Server. Log ini menyerupai seperti berikut ini:
<Tanggal/waktu> SPID<xx> Recovery adalah menulis titik pemeriksaan dalam database <DBNAME/DBID>. Ini adalah
Pesan informasi saja. Tidak ada tindakan pengguna yang diperlukan.
<Tanggal/waktu> SPID<xx> Pemulihan selesai untuk database <DBNAME/DBID> dalam <x> detik (analisis
<x> mdtk, ulangi <x> mdtk, batalkan <x> mdtk.) Ini hanya pesan informasi. Tidak ada tindakan pengguna yang diperlukan.
…
<tanggal/waktu> spid<xx> Kesalahan: 1205, Tingkat Keparahan: 13, Status: 28.
<tanggal/waktu> Transaksi SPID<xx> (ID <Proses xx>) menemui jalan buntu pada sumber daya kunci dengan sumber daya lain
proses dan telah dipilih sebagai korban kebuntuan. Jalankan ulang transaksi.Jika database ketersediaan Anda diaktifkan untuk Microsoft SQL Server Service Broker, pesan dalam database ketersediaan Anda mungkin tidak berhasil diproses. Jika Anda memulai alat pelacakan Profiler, lalu menangkap kejadian "Broker:Message Classify", kejadian berikut akan ditangkap:
9791, Broker dinonaktifkan dalam database pengirim
Catatan: Ini bukan masalah yang sistematis. Anda mungkin dapat menerapkan pembaruan kumulatif ini pada konfigurasi AlwaysOn tanpa mengalami masalah ini. Jika Anda telah menerapkan pembaruan kumulatif ini dan tidak menyadari masalah ini, sistem Anda tidak terpengaruh, dan informasi ini tidak berlaku untuk Anda.
Penyebab
Masalah ini terjadi karena kondisi balapan terkadang terjadi antara utas sistem dan koneksi pengguna. Hal ini mencegah logika patching pembaruan kumulatif mendapatkan kunci yang diperlukan untuk menyelesaikan proses pembaruan.
Resolusi
Untuk mengatasi masalah ini, terapkan hotfix sesuai permintaan (COD) penting berikut:
3034679 MEMPERBAIKI: Grup ketersediaan AlwaysOn mungkin dilaporkan TIDAK DISINKRONKAN
Penting: Anda harus menerapkan hotfix COD ini dan bukan pembaruan kumulatif berikut:
- Pembaruan Kumulatif SQL Server 2014 5
- SQL Server 2012 Paket Layanan 2 Pembaruan Kumulatif 4
- SQL Server 2012 Paket Layanan 2 Pembaruan Kumulatif 3
Catatan Jika telah menerapkan pembaruan kumulatif ini, Anda harus menggunakan solusi berikut untuk mengatasi masalah ini.
Solusi
Karena masalah ini disebabkan oleh persaingan antara sesi pengguna dan sesi peningkatan terhadap database ketersediaan saat database beralih ke peran utama, Anda harus menghilangkan persaingan ini agar database dapat dipulihkan dari status ini.
Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:
Coba metode berikut dalam urutan yang diberikan.
Metode 1: Hilangkan akses databaseSaat database mengalami gejala yang disebutkan di bagian "Gejala", gunakan salah satu atau kedua langkah berikut yang diperlukan untuk menghilangkan kondisi pemblokiran kunci:
- Kueri sys.dm_exec_requests untuk menemukan sesi di mana pemblokiran kunci terjadi dalam database ketersediaan. Gunakan pernyataan KILL untuk mengakhiri sesi ini.
- Nonaktifkan atau hentikan aplikasi yang mengakses database ketersediaan.
Jika Metode 1 tidak mengatasi masalah, lanjutkan ke Metode 2.
Metode 2: Hidupkan ulang server host SQL ServerKetika akses aplikasi dan akses pengguna masih dinonaktifkan, mulai ulang instans SQL Server yang menghosting database ketersediaan yang terpengaruh. Untuk melakukannya, ikuti langkah-langkah berikut:
- Nonaktifkan failover otomatis grup ketersediaan.
- Mulai ulang instans SQL Server yang terpengaruh yang menghosting replika utama.
- Aktifkan failover otomatis grup ketersediaan.
Setelah database yang terpengaruh pulih sepenuhnya, buat kembali konektivitas aplikasi dan pengguna.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".
Referensi
Untuk informasi selengkapnya tentang pembaruan kumulatif yang terpengaruh oleh masalah ini, lihat artikel Basis Pengetahuan Microsoft berikut ini: