SQL Server: Datenbank blieb im Status "Wiederherstellen" stecken
Ich die gesicherten Datenbank:
BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing
Und dann versucht es wiederherzustellen:
RESTORE DATABASE MyDatabase
FROM DISK = 'MyDatabase.bak'
WITH REPLACE --force restore over specified database
Und jetzt die Datenbank ist fest in den Wiederherstellungsstatus.
Einige Leute haben die Theorie aufgestellt, dass es ist, weil es keine log-Datei in die Sicherung ein, und es benötigt, um ein Rollforward ausgeführt werden mit:
RESTORE DATABASE MyDatabase
WITH RECOVERY
Außer, dass natürlich nicht:
Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Und genau das, was Sie wollen in einer katastrophalen situation ist eine Wiederherstellung, die nicht funktionieren.
Backup enthält sowohl eine Daten-und log-Datei:
RESTORE FILELISTONLY
FROM DISK = 'MyDatabase.bak'
Logical Name PhysicalName
============= ===============
MyDatabase C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
MyDatabase_log C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF
InformationsquelleAutor der Frage Ian Boyd | 2009-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die
WITH RECOVERY
option, mit der Sie Ihre DatenbankRESTORE
Befehl, um Ihre Datenbank online als Teil des Wiederherstellungsprozesses.Ist dies natürlich nur, wenn Sie nicht wollen, um wiederherstellen von sicherungen des Transaktionsprotokolls, d.h. Sie wollen nur restore ein backup der Datenbank und dann in der Lage sein, um den Zugriff auf die Datenbank.
Dein Befehl sollte so Aussehen,
Haben Sie möglicherweise mehr Erfolg mit der Wiederherstellung der Datenbank-Assistent in SQL Server Management Studio. Auf diese Weise können Sie die spezifische Datei, die Standorte, die überschreiben-option und der option WITH Recovery. Manchmal ist der Vorgang Der Wiederherstellung stecken, nur wegen der Größe der Datenbank-Datei. siehe hier: https://madhivanan.wordpress.com/2016/09/06/issue-in-recovering-a-database-that-is-in-the-restoring-state-reference/
InformationsquelleAutor der Antwort John Sansom
Hatte ich diese situation wiederherstellen einer Datenbank zu einem SQL Server 2005 Standard Edition-Instanz mithilfe von Symantec Backup Exec 11d. Nach der restore-job erledigt die Datenbank blieb in einer "Wiederherstellen" - Zustand. Ich hatte keine Speicherplatz-Probleme-- die Datenbank einfach nicht aus dem "Wiederherstellen" - Zustand.
Lief ich die folgende Abfrage in der SQL Server-Instanz und festgestellt, dass die Datenbank wurde sofort nutzbar:
InformationsquelleAutor der Antwort Evan Anderson
Hier ist, wie Sie es tun:
Glück!
InformationsquelleAutor der Antwort Tipu Delacablu
Hatte ich einen ähnlichen Vorfall, mit dem stoppen einer sekundären Datenbank für den Protokollversand-server.
Nach dem Befehl zum entfernen des Servers aus der Protokollversand und stoppte den Protokollversand von primären server die Datenbank auf dem sekundären server stecken in der Wiederherstellung des status nach dem Befehl
Den Datenbank-Nachrichten:
Wurde die Datenbank wieder nutzbar nach diesen 18 Sekunden.
InformationsquelleAutor der Antwort Hans
Ich hatte ein ähnliches Problem mit dem wiederherstellen mithilfe von SQL Management Studio. Ich habe versucht zu wiederherstellen einer Sicherungskopie der Datenbank, um eine neue mit einem anderen Namen. Zunächst scheiterte und nach der Festsetzung der neuen Datenbank-Datei Namen, die er erfolgreich durchgeführt wurde - in jedem Fall das Problem, das ich beschreibe, neu aufgetreten ist, auch wenn ich so vom ersten Augenblick an. So, nach der Wiederherstellung der ursprünglichen Datenbank erhalten geblieben ist (Wiederherstellung...) neben dem Namen. In Anbetracht der Antworten von den forum oben (Bhusan) ich habe versucht mit im Abfrage-editor auf der Seite die folgenden:
welche das Problem beseitigt haben. Ich hatte Schwierigkeiten auf den ersten, weil der name der Datenbank, die Sonderzeichen enthielt. Ich habe dieses Problem gelöst, durch hinzufügen von Doppel-Anführungszeichen - Anführungszeichen würde nicht funktionieren, geben Sie eine "Falsche syntax in der Nähe ..." - Fehler.
Dies war die minimale Lösung die ich versucht habe um dieses Problem zu beheben (stuck-Datenbank im Wiederherstellungsstatus) und ich hoffe, es kann angewendet werden, um mehr Fälle.
InformationsquelleAutor der Antwort Demetris Leptos
OK, ich habe ähnliches problem und genau wie im Fall von Pauk, es wurde verursacht von dem server läuft die Speicherplatz auf der Festplatte während der Wiederherstellung, und so verursachte einen permanenten Status wiederherstellen.
So beenden Sie diesen Zustand, ohne zu stoppen von SQL Server-Diensten?
Habe ich eine Lösung gefunden 🙂
InformationsquelleAutor der Antwort
MIT RECOVERY-option wird standardmäßig verwendet, wenn DATENBANK WIEDERHERSTELLEN/RESTORE LOG-Befehle ausgeführt. Wenn Sie stecken in der "wiederherstellen" - Prozess, können Sie wieder eine Datenbank zu online-Zustand durch ausführen von:
Wenn es eine Notwendigkeit für mehrere Dateien wiederherstellen, CLI-Befehle benötigt, die MIT der Option with NORECOVERY und WITH RECOVERY jeweils nur die Letzte Datei im Befehl sollte MIT RECOVERY zurück zu bringen, die Datenbank online:
Können Sie SQL Server Management Studio-Assistent:
Gibt es auch virtuelle Wiederherstellung Prozess, aber Sie müssen verwenden Sie 3rd-party-Lösungen. In der Regel können Sie eine Datenbank-backup als live-online-Datenbank. ApexSQL und Idera hat Ihre eigenen Lösungen. Überprüfung von SQL Hammer über ApexSQL Restore. Virtuelle Wiederherstellung ist eine gute Lösung, wenn Sie ' re Umgang mit einer großen Anzahl von sicherungen. Restore-Prozess ist viel schneller und kann auch sparen Sie eine Menge Speicherplatz auf der Festplatte Laufwerk. Werfen Sie einen Blick auf Infografik hier für einen Vergleich.
InformationsquelleAutor der Antwort Marko Krstic
Kann dies ziemlich offensichtlich, aber es stolperte, mich gerade jetzt:
Wenn Sie die Einnahme von ein tail-log backup, dieses Problem kann auch dadurch verursacht werden, dass diese option im SSMS Wiederherstellungs-Assistenten - "Verlassen-source-Datenbank in dem Status wiederherstellen (WITH NORECOVERY)"
InformationsquelleAutor der Antwort TrailJon
Ich herausgefunden habe, warum.
Wenn der Kunde wer hat den
RESTORE DATABASE
Befehl trennt die Verbindung während der Wiederherstellung, die Wiederherstellung stecken.Es ist seltsam, dass der server, wenn gesagt, die Wiederherstellung einer Datenbank durch ein client-Verbindung nicht beendet wird, das wiederherzustellen, es sei denn, der client bleibt verbunden die ganze Zeit.
InformationsquelleAutor der Antwort Ian Boyd
diese Arbeit :
http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/8dd1b91d-3e14-4486-abe6-e3a550bfe457
Ich hatte eine situation, wo meine Datenbank zeigte den Status wiederherstellen, und ich konnte gar nicht Fragen, konnte sich nicht verbinden mit unserer software.
Was ich Tat, um aus dieser situation herauszukommen ist:
Beenden Sie alle SQL-bezogene Dienste aus der windows-Dienste.
Öffnete ich den Ordner "DATA" wo die Ldf-und Mdf-Dateien befindet sich im SQL-Verzeichnis, normalerweise wie seine :
"C:\Program Dateien***********\MSSQL\DATA
Dann kopierte ich sowohl die Ldf-und Mdf-Dateien von der Datenbank:
[db-name].mdf und [db-name]_log.ldf
Ich kopiert diese beiden Dateien in einen anderen Ordner.
Dann fing ich an, alle SQL-Dienste (in Schritt 1) wieder in den windows-Diensten.
Begann meine MS-SQL-Management-studio mit normalen login.
Klicken Sie rechts auf den Täter, der Datenbank und drücke auf DELETE (löschen von der Datenbank).
Alle die LDF-und MDF-Dateien mit Bezug zu dieser Datenbank haben, ging aus dem DATA-Ordner (siehe Schritt 2).
Erstellt eine neue Datenbank mit dem gleichen Namen (der gleiche name, den ich gelöscht in Schritt 6 - der Täter-Datenbank).
Dann [database name]->Rechte Maustaste -> Aufgaben -> Offline.
Habe ich dann Kopiert und beide Dateien (aus Schritt 3) wieder in den DATA-Ordner (Schritt 2).
[database name]->Rechte Maustaste -> Aufgaben -> Online Bringen.
InformationsquelleAutor der Antwort Ameen Abuhilal
Habe ich das problem, wenn ich auch recieved ein TCP-Fehler im Ereignisprotokoll...
Drop die DB mit sql oder mit der rechten Maustaste auf es in-manager "löschen"
Und erneut wiederherzustellen.
Habe ich tatsächlich begonnen, tun dies standardmäßig. Skript für die DB-drop, neu erstellen und dann wiederherstellen.
InformationsquelleAutor der Antwort ZeusT
Hatte ich eine . in meiner Datenbank, und die Abfrage hat nicht funktioniert, weil der, dass (sagen Falsche syntax in der Nähe '.') Dann merkte ich, dass ich noch eine Halterung für den Namen:
InformationsquelleAutor der Antwort Ashkan Sirous
Kann es auch problem beim löschen eines stuck-Datenbank, wenn die snapshot aktiviert ist. Für mich funktionierte:
InformationsquelleAutor der Antwort
Standardmäßig alle
RESTORE DATABASE
kommt mitRECOVERY
eingerichtet.Die "no Recovery" - Optionen, im Grunde sagt der SQL Server, die Datenbank wartet auf mehr Dateien wiederherstellen (könnte ein DIFF Datei und LOG - Datei und können auch tail-log backup-Datei, wenn möglich).
Die "RECOVERY" - Optionen, beenden Sie alle Transaktionen und lassen Sie die Datenbank bereit, um Transaktionen durchzuführen.
Also:
NORECOVERY
option, wenn Sie eine DIFF backup. Keine LOG Sicherung dürfen in EINFACH Wiederherstellungsmodell der Datenbank.NORECOVERY
option, führen Sie dann eine DIFF gefolgt vonNORECOVERY
und endlich führen Sie LOG wiederherstellen mitRECOVERY
option.Erinnern, DIE LETZTE WIEDERHERSTELLUNG ABFRAGE MUSS
RECOVERY
OPTION. Es könnte sein, eine explizite Weise oder nicht. In Thermen von T-SQL, die situation:USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak WITH FILE = 1, [REPLACE],NOUNLOAD, RECOVERY -- This option could be omitted.
GO
MIT REPLACE-option muss mit Vorsicht verwendet werden, da es zu Datenverlust führen kann,
Oder, wenn Sie führen Sie eine VOLLSTÄNDIGE und DIFF-backup verwenden, können Sie diese
USE [master]
GO
-- Perform a Tail-Log backup, if possible.
BACKUP LOG Database_name
GO
-- Restoring a FULL backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
-- Restore the last DIFF backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_DIFF_backup_file.bak' WITH FILE = 1,
NORECOVERY,NOUNLOAD
GO
-- Restore a Log backup
RESTORE LOG Database_name
FROM DISK = N'path_of_LOG_backup_file.trn' WITH FILE = 2,
RECOVERY, NOUNLOAD
GO
Natürlich können Sie eine Wiederherstellung durchführen mit der option STATS = 10 , erzählt die SQL-Server-Bericht alle 10% abgeschlossen.
Wenn Sie es bevorzugen, können Sie beobachten den Prozess oder Wiederherstellung in Echtzeit Abfragen.
Wie folgt:
Hoffe, dass dies helfen.
InformationsquelleAutor der Antwort BMDaemon
Haben Sie versucht, läuft ein VERIFY? Nur um sicherzustellen, dass es ist eine solide backup.
http://msdn.microsoft.com/en-us/library/ms188902.aspx
InformationsquelleAutor der Antwort Sam
Mit folgenden T-SQL:
WÄHLEN Sie mit dem Namen
VON master.sys.sysaltfiles wurde geändert
WHERE dbid = DB_ID('db_name');
Mithilfe von T-SQL kontinuierlich:
RESTORE DATABASE FROM DISK = 'Db_pfad'
MIT
NEU STARTEN, ERSETZEN;
Hoffe diese Hilfe!
InformationsquelleAutor der Antwort Trung Nguyen
Alle MIT RECOVERY-based-Optionen nicht für mich arbeiten.
Was Tat, war zu tun, der vollständigen Wiederherstellung von Management Studio.
InformationsquelleAutor der Antwort earthling42
Ich hatte das gleiche Problem... ich weiß zwar nicht, warum meine Datenbank dieses problem erlebt, wie meine Fahrt war nicht voll... es ist wie Es wurde beschädigt oder so etwas. Ich habe versucht, alle oben keiner von Ihnen voll arbeitete, habe ich vor allem dachte, dass der Vorschlag, den Dienst beenden und löschen Sie die mdf-und ldf-Dateien funktionieren würde... aber es immer noch erstarrte auf wiederherstellen?
Landete ich bei der Lösung dieses durch das löschen der Dateien, wie erwähnt, aber anstatt zu versuchen, die Wiederherstellung der DB wieder ich übernommen frisch .mdf-und .ldf-Dateien und Befestigt diese mit Hilfe der Front-End-Anlage-Assistent. Erleichterung, es hat funktioniert!!
Es dauerte eine EWIGKEIT, kopieren die neuen Dateien als bin ich in einer Virtuellen Maschine... also kopieren und einfügen über die Zwischenablage dauerte etwa eine Stunde, selbst so würde ich nur empfehlen dies als einen letzten Versuch.
InformationsquelleAutor der Antwort Anthony Griggs
Hab ich die MyDbName (Wiederherstellung...) Fall, weil der SQL-Express-lizenziert begrenzen.
In der log-Datei, fand ich dies:
Also, wenn Sie versuchen, die Wiederherstellung einer größeren Datenbank, schalten Sie Ihre SQL Express server Developer edition zum Beispiel.
InformationsquelleAutor der Antwort Dmitry Pavlov