İşte araştırabileceğim birkaç yol. Bunların hepsini yapmayın (bazıları aynı amacı gerçekleştirmek için farklı tekniklerdir), ancak dikkate almaya değer:
1. SQL Hata Günlüğünü doğrudan inceleyin
SQL hata günlüklerini içeren klasöre doğrudan göz atın ERRORLOG
ve SQL örneğinin neden başlamaması hakkında daha fazla bilgi almak için en son not defterini yükleyin . Belki de problemin ana veritabanında olmadığını göreceksiniz.
2. Örneği tek kullanıcı modunda başlatmayı deneyin
Burada (tek kullanıcı modu) ve (minimum yapılandırma modu) dahil olmak üzere SQL sunucusu için başlangıç seçeneklerinin tam listesi . Diğer seçenekler, sorun buysa, ana veritabanının yolunu belirtmenize olanak tanır.-m
-f
Örneği başlatabiliyorsanız , ana veritabanını geri yüklemek için bağladığınız MSDN makalesindeki adımları veya Thomas LaRock'un bu ayrıntılı adımını izleyin .
Başka bir uygulama yapmadan önce her zaman tek kullanıcı bağlantısını alırsa, önce başlatılmaması için SQL Agent'ı devre dışı bırakın. İkinci olarak, uygulama adını belirtmek için parametreyi kullanmak için bu sorudaki fikirlere bakın-m"Application Name"
.
3. master
Başka bir örneğe geri yükleme ve dosyalarını kopyalama
Bu belgesiz teknikten sadece bir tane daha bahsetmiştim , ancak geçen hafta sonu başarıyla kullandım, bu yüzden denemeye değer olabilir.
Örneği tek kullanıcı modunda başlatamıyorsanız, ancak aynı sürümü ve derlemeyi çalıştıran başka bir SQL örneğiniz varsa , bilinen son iyi ana veritabanı yedeklemesini ölü sunucunuzdan diğer örneğe geri yüklemeyi deneyin:
- Elbette (
master_please_god_let_this_work
) farklı bir ad olarak geri yükleyin , WITH MOVE
böylece master
iyi sunucunuzun üzerine yazmazsınız
- Geri yükleyin
WITH NORECOVERY
. Bunun gerekli olduğundan emin değilim, ancak diğer sunucunun geri yüklenen master'daki hiçbir şeyi değiştirmeyeceğini bildiğimden daha iyi hissettirdi
- Çevrimdışı olarak ayarla:
ALTER DATABASE [master_please_god_let_this_work] SET OFFLINE
- Geri yüklenen MDF ve LDF dosyalarını iyi sunucudan ölü sunucuya kopyalayın
- Bozuk ana dosyaları geri yüklenen sürümlerinizle değiştirmek için
master.mdf
ve mastlog.ldf
dosyalarını gerektiği gibi yeniden adlandırın
- Parmaklarınızı çaprazlayın ve örneği başlatın
- İsteğe bağlı: yeniden canlandırılan sunucuda yeni bir master geri yüklemesi yapın. Bunun gerekli olmadığından emin değiliz, çünkü değişmemeye oldukça dikkat ettik
master
.
4. Sistem veritabanlarını yeniden oluşturun
Aynı sürümü çalıştıran başka bir örneğiniz yoksa veya # 3'te listelenen belgesiz prosedürü kullanmaktan memnun değilseniz veya yedeklemeniz yoksamaster
( neden yedeklemeniz yok ?? ), Eğer yapabilirsiniz orijinalinden SQL sistem veritabanları disk takmak yeniden :
Setup.exe /ACTION=REBUILDDATABASE /...
Bu tamamlandığında, master
son iyi yedeklemenizden geri yüklemek için önceden bağlanmış adımları takip edebilirsiniz . Ayrıca msdb
, tüm işlerinizi, iş planınızı ve iş geçmişinizi saklamak için son zamanlarda yedeklemenizi geri yüklemeniz gerekir .
5. Tüm USER veritabanlarını yeni (veya mevcut) bir SQL örneğine geri yükleme
Zaten çalışmakta olan başka bir mevcut örneğiniz varsa (uygun SQL sürümü, yeterli disk alanı), gerekirse diğer sorun giderme adımlarında çalışırken, muhtemelen en son yedeklemelerden veritabanı geri yüklemelerini başlatırım.
Yeni (veya yeniden yüklenen) örneğinizin aynı diske erişimi varsa, bunları yeni veritabanları olarak eklemek çok daha hızlıdır:
CREATE DATABASE foo
ON (FILENAME = 'D:\data\foo.mdf'),
(FILENAME = 'D:\data\foo_log.ldf')
FOR ATTACH;
6. Üzerinde değişiklik yapın master
Başarılı bir şekilde geri master
yükledikten sonra (yukarıdaki tekniklerden herhangi biri aracılığıyla), az önce geri yüklediğiniz yedeklemeden sonra yapılmışsa, kaybolabilecek değişiklikleri araştırmanız gerekir:
- Güvenlik değişiklikleri
- Yeni veritabanları (dosyalar hala diskte olacak, sadece ekleyin)
- Sunucu genelinde ayarlar
Bunları bulmanın sihirli bir yolu yok, eğer varsa, bu tür değişiklikler için kendi şirketinizin dokümantasyon yoluna geri dönmeniz gerekecek.