So stellen Sie mehrere Sicherungen wieder her

7

Ich verwende geplante ExpressMaint- und Windows-Aufgaben, um wöchentliche vollständige und tägliche differenzielle Sicherungen einiger MS SQL Server 2008 R2 Express-Datenbanken zu erstellen

Wöchentliche Fülle

expressmaint -S (local)\SQLExpress -D ALL -T DB -R D:\Backup\Reports -RU WEEKS -RV 1 -B D:\Backup\Data -BU WEEKS -BV 4 -V -C

Tägliche Diffs

expressmain -S (local)\SQLExpress -D ALL -T DIF -R D:\Backup\Reports -RU WEEKS -RV 1 -B D:\Backup\Data -BU days -BV 7 -V -C

Wenn ich diese bis zu einem bestimmten Punkt wiederherstellen möchte, muss ich jedes Backup einzeln wiederherstellen. Gibt es eine Möglichkeit , eine Reihe von Sicherungen zu einer einzigen Wiederherstellung zu verketten, die in der richtigen Reihenfolge wiedergegeben wird?

Wenn ich das versuche, erhalte ich den Fehler

Beim Ausführen einer Transact-SQL-Anweisung oder eines Batch-Stapels ist eine Ausnahme aufgetreten. (Microsoft.SqlServer.ConnectionInfo)


ZUSÄTZLICHE INFORMATION:

Das auf "C: \ Foo \ Bar_FullBackup_20110130_2346.bak" geladene Medium ist so formatiert, dass es 1 Medienfamilie unterstützt, es werden jedoch 2 Medienfamilien gemäß der Spezifikation des Sicherungsgeräts erwartet. RESTORE HEADERONLY wird abnormal beendet. (Microsoft SQL Server, Fehler: 3231)

Klicken Sie auf: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=3231&LinkId=20476

Bearbeiten

Ich verwende den Wiederherstellungsdialog aus dem Aufgabenmenü, wenn Sie mit der rechten Maustaste auf eine Datenbank klicken. Von dort aus wähle ich "Vom Gerät wiederherstellen" und füge die .bak-Dateien hinzu, von denen ich wiederherstellen möchte.

Wenn ich nur eine einzelne .bak-Datei hinzufüge, bin ich in Ordnung. Wenn ich mehrere Dateien hinzufüge, wird der obige Fehler angezeigt.

Greg B.
quelle
Können Sie ein Beispiel für die von Ihnen verwendete Wiederherstellungsanweisung zeigen?
Eric Humphrey - Lotsahelp
@ Eric fügte ein wenig mehr Details hinzu
Greg B

Antworten:

10

Mit SSMS können Sie eine Wiederherstellung der Sicherungen nicht in einem Vorgang verketten. Sie müssten mehrere Wiederherstellungen durchführen. Sie sollten T-SQL verwenden, um effizienter zu sein.

--Restore the most recent full backup
RESTORE DATABASE <mydb>
FROM DISK = 'Path to full backup'
WITH NORECOVERY, STATS=10 --If only restoring the full, change to RECOVERY

--Restore the most recent diff backup
RESTORE DATABASE <mydb>
FROM DISK = 'Path to diff backup'
WITH RECOVERY, STATS=10

Weitere Informationen zu RESTORE: http://msdn.microsoft.com/en-us/library/ms186858.aspx

Eric Humphrey - Lotsahelp
quelle
Sie können Sicherungstypen über die GUI in SSMS miteinander verketten. Sie fügen jede Sicherungsdatei für die angegebene Datenbank hinzu und sie überprüft die Dateien und führt dann die Wiederherstellung für Sie durch. Wenn Sie das Skript für das neue Abfragefenster verwenden, wird ein ähnlicher Code angezeigt, der in dieser Antwort enthalten ist.
6

--Stellen Sie die letzte vollständige Sicherung wieder her

RESTORE DATABASE <DATABASE NAME>
FROM DISK = <Path to full backup>
WITH NO RECOVERY

--Stellen Sie die neueste differenzielle Sicherung wieder her

RESTORE DATABASE <DATABASE NAME>
FROM DISK = <Path to differential backup>
WITH NORECOVERY

--Stellen Sie alle Transaktionsprotokollsicherungen wieder her, die nach der letzten differenziellen Sicherung erstellt wurden

RESTORE DATABASE <DATABASE NAME>
FROM DISK = <Path to first transactional log backup>
WITH NORECOVERY

. . . . .

RESTORE DATABASE <DATABASE NAME>
FROM DISK = <Path to last transactional log backup>
WITH RECOVERY 
Ranjith Kumar
quelle
4

Sie versuchen, von einem Gerät wiederherzustellen, möchten jedoch die Option "Aus Datenbank" in SSMS angeben. Die GUI sollte die verfügbaren Sicherungsdateien aufrufen und Sie können die vollständigen und differenziellen Dateien auswählen.

SQLRockstar
quelle
Wie funktioniert das, wenn ich auf einem anderen Server wiederherstelle? Muss ich der Datenbank mitteilen, welche Dateien als Backups betrachtet werden?
Greg B
1
Sie werden SSMS auf diese Weise nicht verwenden können, glaube ich nicht. Sie müssen die Wiederherstellungsbefehle ausschreiben, wie Eric oben vorgeschlagen hat.
SQLRockstar