Gejala
Misalnya Anda memiliki Microsoft SQL Server 2014, 2016 atau 2017 terinstal. Anda mungkin mengalami satu atau beberapa masalah berikut:
-
Contoh SQL Server muncul tidak responsif dan terjadi kesalahan "Penjadwal non-menghasilkan". Anda mungkin harus memulai ulang server untuk memulihkan.
-
Rollback transaksi mungkin memakan waktu yang lama untuk diselesaikan. Dalam kebanyakan kasus mulai ulang instance akan memungkinkan database untuk pulih lebih cepat daripada rollback. Perhatikan bahwa ada banyak alasan rollback mungkin memakan waktu lama untuk diselesaikan, lihat bagian "informasi selengkapnya" di bawah ini untuk detail tentang pemantauan rollbacks sebelum mencoba untuk memulai ulang.
-
Anda mungkin melihat tingginya menunggu spinlocks seperti SOS_OBJECT_STORE.
Pemecahan Masalah
Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut ini 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:
Pembaruan kumulatif terbaru untuk SQL Server 2017
Informasi paket layanan untuk SQL Server
Pembaruan ini diperbaiki dalam paket layanan berikut untuk SQL Server:
Paket Layanan bersifat kumulatif. Setiap paket layanan baru berisi semua perbaikan yang ada dalam paket layanan sebelumnya, beserta perbaikan baru apa pun. Rekomendasi kami adalah untuk menerapkan paket layanan terbaru dan pembaruan kumulatif terbaru untuk paket layanan tersebut. Anda tidak harus menginstal paket layanan sebelumnya sebelum menginstal paket layanan terbaru. Gunakan tabel 1 dalam artikel berikut ini untuk menemukan informasi selengkapnya tentang paket layanan terbaru dan pembaruan kumulatif terbaru.
Cara menentukan versi, edisi, dan tingkat pembaruan SQL Server dan komponennya
Informasi Selengkapnya
Ada banyak alasan mengapa rollback dapat memakan waktu lama seperti transaksi berjalan lama, sejumlah besar VLFs dalam file log transaksi, Slow I/O etc. Untuk memverifikasi bahwa masalah yang diuraikan dalam artikel ini adalah penyebab utama rollback lambat, kami menyarankan teknik berikut ini digunakan untuk memantau kemajuan operasi rollback:
-
Dari sys.dm_exec_requests, identifikasi session_id yang perintahNya diatur menjadi "DIBUNUH/rollback" dan pastikan bahwa sesi tersebut TERAKUMULASI baik IO maupun waktu CPU yang menunjukkan kemajuan. Jika IO tidak berubah, maka mungkin ada indikasi bahwa Anda menghadapi masalah yang diuraikan dalam artikel ini.
-
Sys.dm_tran_database_transactions kueri untuk mengidentifikasi status rollback saat ini menggunakan kueri seperti berikut ini:
Pilih getdate () sebagai CurrentTime, database_transaction_next_undo_lsn, database_transaction_begin_lsn, t.transaction_id, database_transaction_begin_time, database_transaction_log_record_count, db_name (t.database_id)
DARI sys.dm_tran_database_transactions t
BERGABUNG sys.dm_exec_requests s PADA t.transaction_id = s.transaction_id
Di mana t.database_id = db_id (' <nama database') dan s.session_id =<Session_id menjalankan operasi rollback>
Catatan:
Dalam kueri di atas,
database_transaction_next_undo_lsn adalah LSN catatan berikutnya untuk membatalkan. database_transaction_begin_lsn adalah LSN dari mulai merekam untuk transaksi dalam log transaksi.
database_transaction_next_undo_lsn harus menurun dengan setiap snapshot kueri ini. Rollback akan berhasil diselesaikan ketika database_transaction_next_undo_lsn mencapai database_transaction_begin_lsn.
Tujuannya di sini adalah untuk mengambil beberapa cuplikan dari kueri sebelumnya dalam interval yang telah ditentukan sebelumnya, lalu menggunakan Delta dari LSNs yang diproses di database_transaction_next_undo_lsn dalam interval tersebut dan melakukan ekstrapolasi waktu yang diambil untuk memperkirakan waktu yang diperlukan untuk database_transaction_next_undo_lsn mencapai database_transaction_begin_lsn.
Jika rollback sedang berkembang pada tingkat yang layak di antara setiap snapshot, kami menyarankan agar rollback diperbolehkan menyelesaikan sendiri tanpa memulai ulang contoh SQL Server.
Lihat artikel berikut ini untuk informasi selengkapnya tentang pemulihan jangka panjang:
-
SQL Server (2000, 2005, 2008): pemulihan/rollback memakan waktu lebih lama dari yang diharapkan
-
Bagaimana struktur file log dapat mempengaruhi waktu pemulihan database
-
Melacak kemajuan pemulihan database menggunakan informasi dari DMV
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".
Referensi
Pelajari tentang terminologiyang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.