Hilfe! Meine Master-Datenbank ist beschädigt, ich kann die SQL-Instanz nicht einmal online schalten! Welche Möglichkeiten habe ich, um meinen Server wieder zu sichern?
Ich habe eine Sicherungskopie des Masters, aber auf der MSDN-Seite "Wiederherstellen der Master-Datenbank" werde ich aufgefordert, die Instanz im Einzelbenutzermodus zu starten, was ich nicht tun kann!
(Hinweis: Ich lasse diese Frage in Bezug auf die SQL-Version nicht spezifiziert, um eine allgemein anwendbare Referenz zu sein. Es gibt einige ähnliche Fragen zu DBA.SE, aber keine, bei denen der Server nicht gestartet werden kann.)
Antworten:
Hier sind einige Möglichkeiten, die ich untersuchen würde. Tun Sie nicht alle (einige davon sind unterschiedliche Techniken, um denselben Zweck zu erreichen), aber es lohnt sich, darüber nachzudenken:
1. Untersuchen Sie das SQL-Fehlerprotokoll direkt
Navigieren Sie direkt zu dem Ordner mit den SQL-Fehlerprotokollen und laden Sie den neuesten
ERRORLOG
in den Editor, um weitere Informationen darüber zu erhalten, warum die SQL-Instanz nicht gestartet wird. Vielleicht werden Sie feststellen, dass das Problem überhaupt nicht mit der Master-Datenbank zusammenhängt.2. Versuchen Sie, die Instanz im Einzelbenutzermodus zu starten
Hier finden Sie eine vollständige Liste der Startoptionen für SQL Server , einschließlich
-m
(Einzelbenutzermodus) und-f
(Minimalkonfigurationsmodus). Mit anderen Optionen können Sie den Pfad für die Master-Datenbank angeben, wenn dies das Problem ist.Wenn Sie die Instanz starten können, befolgen Sie die Schritte in dem MSDN-Artikel, den Sie zum Wiederherstellen der Master-Datenbank verlinkt haben , oder in dieser detaillierten exemplarischen Vorgehensweise von Thomas LaRock .
Wenn eine andere Anwendung immer die Einzelbenutzerverbindung abruft, bevor Sie können, deaktivieren Sie zuerst den SQL-Agenten, damit er nicht gestartet wird. Zweitens finden Sie in den Ideen zu dieser Frage Informationen zur Verwendung des
-m"Application Name"
Parameters zur Angabe des Anwendungsnamens.3. Stellen Sie
master
eine andere Instanz wieder her und kopieren Sie deren DateienIch habe nur eine weitere Erwähnung dieser undokumentierten Technik gefunden, aber ich habe sie am vergangenen Wochenende erfolgreich angewendet, sodass es möglicherweise einen Versuch wert ist.
Wenn Sie die Instanz nicht im Einzelbenutzermodus starten können, aber eine andere SQL-Instanz mit genau derselben Version und demselben Build ausgeführt wird , versuchen Sie, die letzte bekannte gute Master-Datenbanksicherung von Ihrem toten Server auf der anderen Instanz wiederherzustellen:
master_please_god_let_this_work
) als anderen Namen wieder her,WITH MOVE
damit Siemaster
Ihren guten Server nicht überschreibenWITH NORECOVERY
. Ich bin mir nicht sicher, ob dies notwendig ist, aber ich fühlte mich besser, als ich wusste, dass der andere Server nichts am wiederhergestellten Master ändern würdeALTER DATABASE [master_please_god_let_this_work] SET OFFLINE
master.mdf
undmastlog.ldf
nach Bedarf um, um die fehlerhaften Masterdateien durch Ihre wiederhergestellten Versionen zu ersetzenmaster
.4. Erstellen Sie die Systemdatenbanken neu
Wenn auf keiner anderen Instanz dieselbe Version ausgeführt wird oder wenn Sie mit der in # 3 aufgeführten undokumentierten Prozedur nicht vertraut sind oder wenn Sie keine Sicherungen von haben
master
( warum haben Sie keine Sicherungen? ), Sie können die SQL-Systemdatenbanken von der ursprünglichen Installationsdiskette neu erstellen :Wenn dies abgeschlossen ist, können Sie die zuvor verknüpften Schritte ausführen, um
master
von Ihrer letzten guten Sicherung wiederherzustellen . Sie müssen auch eine aktuelle Sicherung von wiederherstellenmsdb
, um alle Ihre Jobs, den Jobplan und den Jobverlauf beizubehalten.5. Stellen Sie alle USER-Datenbanken in einer neuen (oder vorhandenen) SQL-Instanz wieder her
Wenn bereits eine andere vorhandene Instanz ausgeführt wird (richtige SQL-Version, genügend Speicherplatz), würde ich wahrscheinlich Datenbankwiederherstellungen von den letzten Sicherungen starten, während ich an den anderen oben beschriebenen Schritten zur Fehlerbehebung arbeite, nur für den Fall, dass ich sie benötige.
Wenn Ihre neue (oder neu installierte) Instanz Zugriff auf dieselbe Festplatte hat, ist es viel schneller, sie einfach als neue Datenbanken anzuhängen:
6. Nehmen Sie alle Änderungen an erneut vor
master
Nach der erfolgreichen Wiederherstellung
master
(mithilfe einer der oben genannten Techniken) müssen Sie alle Änderungen untersuchen, die möglicherweise verloren gegangen sind, wenn sie nach der soeben wiederhergestellten Sicherung vorgenommen wurden:Es gibt keinen magischen Weg, diese zu finden. Sie müssen für diese Art von Änderungen zum Dokumentationspfad Ihres eigenen Unternehmens zurückkehren, falls Sie einen haben.
quelle