Saya tahu ada pertanyaan yang memecahkan masalah database yang macet RESTORING
dan telah menggunakan solusi tersebut untuk secara manual membawa database kembali online, tetapi skenario saya agak berbeda.
Saya memiliki pemulihan otomatis menggunakan skrip Powershell yang mengembalikan salinan produksi ke instance DEV. Skrip tidak berubah selama sekitar satu tahun dan kadang-kadang proses pemulihan selesai tetapi database yang dipulihkan macet dalam RESTORING
keadaan (terkadang skrip berfungsi dengan baik, terkadang gagal seperti ini).
Setiap kali jika saya menjalankan kembali prosesnya secara manual, atau jika saya secara manual mengembalikan basis data dari antarmuka pengguna SSMS atau melalui T-SQL, proses itu selesai tanpa masalah.
Saya telah menemukan jawaban yang direkomendasikan untuk dijalankan CHECKDB
pada DB yang dipulihkan tetapi tidak ada yang keluar sebagai penyebab masalah ini.
Karena skrip pemulihan mengembalikan cadangan database LENGKAP dan menggunakan "WITH RECOVERY"
opsi, saya mencoba mencari tahu apa yang mungkin menghentikan proses pemulihan, meskipun saya sebenarnya mengembalikannya menggunakan "WITH RECOVERY"
.
Setiap saran sangat dihargai karena saya terjebak dalam mencoba memahami mengapa ini terjadi dari waktu ke waktu.
Saya sangat ingin menyelesaikan akar penyebab masalah daripada mengobati gejalanya, yaitu mengembalikan DB secara manual sekali lagi.
Memperbarui:
Github Gist sebagai @Brent direkomendasikan - di sini .
sumber
EXEC sys.xp_readerrorlog 0,1;
- cari pesan di sekitar waktu operasi pemulihan.Jawaban:
Pisau cukur Occam menyarankan dimulai dengan yang sudah jelas:
Jika skrip Anda terkadang meninggalkan database dalam kondisi pemulihan, maka debug skrip tersebut.
Mulailah dengan mencatat apa yang Anda lakukan dalam sebuah tabel atau file. Kemudian, ketika Anda berakhir dengan database dalam keadaan memulihkan, melangkah kembali melalui log Anda untuk melihat apa yang salah. (Jika Anda ingin satu set mata kedua dari komunitas, coba unggah skrip Anda sebagai Github Gist, tetapi perlu diingat bahwa semakin besar, semakin sulit bagi orang untuk menemukan bug.)
Jika Anda tidak ingin melakukan itu, maka cobalah menjalankan jejak Profiler atau Extended Events untuk melacak pemulihan peristiwa, tetapi berhati-hatilah - itu jauh lebih sulit daripada yang terlihat. (Baca komentar pada posting itu untuk mengetahui lebih banyak lagi gagasan pembaca yang telah mereka coba dan gagal.)
sumber