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-nya
Saya 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:
- Pulihkan sebagai nama yang berbeda, tentu saja (
master_please_god_let_this_work
), WITH MOVE
sehingga Anda tidak menimpa master
server yang baik
- Kembalikan
WITH NORECOVERY
. Tidak yakin ini perlu, tetapi membuat saya merasa lebih baik karena saya tahu server lain tidak akan mengubah apa pun di master yang dipulihkan
- Setel ke offline:
ALTER DATABASE [master_please_god_let_this_work] SET OFFLINE
- Salin file MDF dan LDF yang dipulihkan dari server yang baik ke server yang mati
- Ganti nama file
master.mdf
dan mastlog.ldf
jika perlu untuk mengganti file master yang buruk dengan versi yang dipulihkan
- Silangkan jari Anda dan mulai mesin virtual
- Opsional: lakukan pemulihan master baru di server yang dihidupkan kembali. Tidak yakin ini perlu, karena kami cukup berhati-hati untuk tidak berubah
master
.
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 :
Setup.exe /ACTION=REBUILDDATABASE /...
Ketika ini selesai, Anda dapat mengikuti langkah-langkah yang ditautkan sebelumnya untuk memulihkan master
dari cadangan baik terakhir Anda. Anda juga perlu mengembalikan cadangan terbaru msdb
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:
CREATE DATABASE foo
ON (FILENAME = 'D:\data\foo.mdf'),
(FILENAME = 'D:\data\foo_log.ldf')
FOR ATTACH;
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:
- Perubahan keamanan
- Basis data baru (file-file itu masih ada di disk, cukup lampirkan)
- Pengaturan di seluruh server
Tidak ada cara ajaib untuk menemukan ini, Anda harus kembali ke jejak dokumentasi perusahaan Anda sendiri untuk jenis perubahan ini, jika Anda memilikinya.