Tolong! Basis data master saya rusak, saya bahkan tidak bisa membawa contoh SQL online! Apa pilihan saya untuk membuat cadangan server saya?
Saya memang memiliki cadangan master, tetapi halaman MSDN "Memulihkan database master" meminta saya untuk memulai instance dalam mode single-user, yang tidak bisa saya lakukan!
(Catatan: Saya membiarkan pertanyaan ini tidak ditentukan untuk versi SQL, sehingga menjadi referensi yang lebih luas berlaku. Ada beberapa pertanyaan serupa di DBA.SE, tetapi tidak ada yang melibatkan server yang tidak dapat memulai.)
Jawaban:
Berikut adalah beberapa jalan yang akan saya selidiki. Jangan lakukan semua ini (beberapa di antaranya adalah teknik yang berbeda untuk mencapai tujuan yang sama), tetapi patut dipertimbangkan:
1. Periksa SQL Error Log secara langsung
Telusuri langsung ke folder yang berisi log kesalahan SQL dan muat yang terbaru
ERRORLOG
ke notepad untuk mendapatkan detail lebih lanjut tentang mengapa contoh SQL tidak akan mulai. Mungkin Anda akan menemukan masalahnya bukan pada database master sama sekali.2. Cobalah untuk memulai mesin virtual dalam mode pengguna tunggal
Berikut adalah daftar lengkap opsi startup untuk SQL server , termasuk
-m
(mode pengguna tunggal) dan-f
(mode konfigurasi minimal). Opsi lain memungkinkan Anda menentukan jalur untuk database master, jika itu masalahnya.Jika Anda bisa memulai instance, ikuti langkah-langkah di artikel MSDN yang Anda tautkan untuk memulihkan database master, atau penelusuran terperinci ini oleh Thomas LaRock .
Jika aplikasi lain selalu meraih koneksi pengguna tunggal sebelum Anda bisa, pertama-tama nonaktifkan Agen SQL agar tidak dimulai. Kedua, lihat ide-ide pada pertanyaan ini untuk menggunakan
-m"Application Name"
parameter untuk menentukan nama aplikasi.3. Kembalikan
master
ke instance lain dan salin file-nyaSaya hanya menemukan satu lagi penyebutan teknik tidak berdokumen ini, tetapi saya berhasil menggunakannya pada akhir pekan lalu, jadi mungkin patut dicoba.
Jika Anda tidak dapat memulai instance dalam mode single-user, tetapi Anda memiliki instance SQL lain yang menjalankan rilis dan build yang sama persis , coba pulihkan backup database master baik terakhir yang diketahui dari server Anda yang mati ke instance lain:
master_please_god_let_this_work
),WITH MOVE
sehingga Anda tidak menimpamaster
server yang baikWITH NORECOVERY
. Tidak yakin ini perlu, tetapi membuat saya merasa lebih baik karena saya tahu server lain tidak akan mengubah apa pun di master yang dipulihkanALTER DATABASE [master_please_god_let_this_work] SET OFFLINE
master.mdf
danmastlog.ldf
jika perlu untuk mengganti file master yang buruk dengan versi yang dipulihkanmaster
.4. Bangun kembali basis data sistem
Jika Anda tidak memiliki instance lain yang menjalankan versi yang sama, atau jika Anda tidak nyaman menggunakan prosedur tidak terdaftar yang tercantum dalam # 3, atau jika Anda tidak memiliki cadangan
master
( mengapa Anda tidak memiliki cadangan ?? ), Anda dapat membangun kembali database sistem SQL dari disk instalasi asli :Ketika ini selesai, Anda dapat mengikuti langkah-langkah yang ditautkan sebelumnya untuk memulihkan
master
dari cadangan baik terakhir Anda. Anda juga perlu mengembalikan cadangan terbarumsdb
untuk menjaga semua pekerjaan Anda, jadwal pekerjaan, dan riwayat pekerjaan.5. Kembalikan semua database USER ke instance SQL baru (atau yang sudah ada)
Jika Anda sudah memiliki instance lain yang sudah berjalan (versi SQL yang tepat, ruang disk yang cukup), saya mungkin akan memulai pemulihan database dari cadangan terbaru saat saya sedang mengerjakan langkah pemecahan masalah lainnya di atas, kalau-kalau saya membutuhkannya.
Jika instance baru Anda (atau diinstal ulang) memiliki akses ke disk yang sama, itu jauh lebih cepat untuk hanya melampirkannya sebagai database baru:
6. Lakukan kembali setiap perubahan
master
Setelah Anda berhasil memulihkan
master
(melalui salah satu teknik di atas), Anda perlu menyelidiki setiap perubahan yang mungkin hilang, jika dilakukan setelah cadangan yang baru saja Anda pulihkan:Tidak ada cara ajaib untuk menemukan ini, Anda harus kembali ke jejak dokumentasi perusahaan Anda sendiri untuk jenis perubahan ini, jika Anda memilikinya.
sumber
Saya hanya ingin menambahkan kemungkinan masalah & solusi yang baru saja saya temui - Saya memiliki situasi yang sama selama Pembaruan Kumulatif yang gagal (SQL2016 CU12) dan pesan di penampil acara dan errlog di mana mengatakan "Tidak dapat memulihkan database master. SQL Server adalah tidak dapat berjalan. Kembalikan master dari cadangan penuh, perbaiki, atau bangun kembali. ", namun saya akhirnya menemukan bahwa jika saya hanya memutar ulang executable CU, ia mendeteksi status pemutakhiran sebagai" Tidak terinstal sempurna "dan memungkinkan saya untuk hanya menjalankan perbarui lagi, setelah itu selesai dengan sukses dan master database dan semua lainnya dibuka tanpa masalah.
sumber