Wiederherstellen einer SQL Server-Datenbank zu einem Zeitpunkt (vollständiges Wiederherstellungsmodell)

In diesem Thema wird erläutert, wie in SQL Server 2012 eine Datenbank bis zu einem bestimmten Zeitpunkt mithilfe von SQL Server Management Studio oder Transact-SQL wiederhergestellt wird. Dieses Thema ist nur für SQL Server-Datenbanken relevant, die das vollständige oder massenprotokollierte Wiederherstellungsmodell verwenden.

Wichtiger HinweisWichtig

Wenn jedoch beim massenprotokollierten Wiederherstellungsmodell die Protokollsicherung massenprotokollierte Änderungen enthält, ist die Wiederherstellung bis zu einem bestimmten Zeitpunkt nicht möglich. Die Datenbank muss bis zum Ende der Transaktionsprotokollsicherung wiederhergestellt werden.

  • Vorbereitungen:  

    Empfehlungen

    Sicherheit

  • Wiederherstellen einer SQL Server-Datenbank zu einem bestimmten Zeitpunkt mit:  

    SQL Server Management Studio

    Transact-SQL

Vorbereitungen

Empfehlungen

  • Verwenden von STANDBY zum Finden eines unbekannten Zeitpunkts

  • Frühes Angeben des Zeitpunkts in einer Wiederherstellungssequenz

Sicherheit

Berechtigungen

Ist die wiederherzustellende Datenbank nicht vorhanden, muss der Benutzer über CREATE DATABASE-Berechtigungen verfügen, um RESTORE ausführen zu können. Ist die Datenbank vorhanden, werden RESTORE-Berechtigungen standardmäßig den Mitgliedern der festen Serverrollen sysadmin und dbcreator sowie dem Besitzer (dbo) der Datenbank erteilt (für die Option FROM DATABASE_SNAPSHOT ist die Datenbank immer vorhanden).

RESTORE-Berechtigungen werden Rollen erteilt, in denen Mitgliedsinformationen immer für den Server verfügbar sind. Da die Mitgliedschaft einer festen Datenbankrolle nur geprüft werden kann, wenn die Datenbank unbeschädigt ist und auf sie zugegriffen werden kann, was beim Ausführen von RESTORE nicht immer der Fall ist, verfügen Mitglieder der festen Datenbankrolle db_owner nicht über RESTORE-Berechtigungen.

[Nach oben]

Verwenden von SQL Server Management Studio

So stellen Sie eine Datenbank bis zu einem Zeitpunkt wieder her

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit der entsprechenden Instanz von SQL Server Database Engine (Datenbankmodul) her, und erweitern Sie die Serverstruktur.

  2. Erweitern Sie Datenbanken. Wählen Sie je nach Datenbank entweder eine Benutzerdatenbank aus, oder erweitern Sie Systemdatenbanken, und wählen Sie eine Systemdatenbank aus.

  3. Klicken Sie mit der rechten Maustaste auf die Datenbank, zeigen Sie auf Tasks und Wiederherstellung, und klicken Sie dann auf Datenbank.

  4. Legen Sie Quelle und Speicherort der wiederherzustellenden Sicherungssätze auf der Seite Allgemein mithilfe des Abschnitts Quelle fest. Wählen Sie eine der folgenden Optionen aus:

    • Datenbank

      Wählen Sie die wiederherzustellende Datenbank aus der Dropdownliste aus. Die Liste enthält nur Datenbanken, die entsprechend dem Sicherungsverlauf von msdb gesichert wurden.

    HinweisHinweis

    Wenn die Sicherung von einem anderen Server abgerufen wird, verfügt der Zielserver über keine Sicherungsverlaufsinformationen für die angegebene Datenbank. Wählen Sie in diesem Fall Sicherungsmedium aus, um die wiederherzustellende Datei oder das Medium manuell anzugeben.

    • Sicherungsmedium

      Klicken Sie auf die Schaltfläche zum Durchsuchen (...), um das Dialogfeld Sicherungsmedien auswählen zu öffnen. Wählen Sie im Feld Sicherungsmedientyp einen der aufgeführten Medientypen aus. Wenn Sie ein oder mehrere Medien für das Feld Sicherungsmedien auswählen möchten, klicken Sie auf Hinzufügen.

      Klicken Sie nach dem Hinzufügen der gewünschten Medien zum Listenfeld Sicherungsmedien auf OK, um zur Seite Allgemein zurückzukehren.

      Wählen Sie im Listenfeld Quelle: Sicherungsmedium: Datenbank den Namen der Datenbank aus, die wiederhergestellt werden soll.

      Hinweis   Diese Liste ist nur verfügbar, wenn Sicherungsmedium ausgewählt wird. Nur Datenbanken mit Sicherungen auf dem ausgewählten Medium stehen zur Verfügung.

  5. Im Abschnitt Ziel wird das Feld Datenbank automatisch mit dem Namen der Datenbank aufgefüllt, die wiederhergestellt werden soll. Geben Sie zum Ändern des Datenbanknamens den neuen Namen ins Feld Datenbank ein.

  6. Klicken Sie auf Zeitachse, um auf das Dialogfeld Sicherungszeitachse zuzugreifen.

  7. Klicken Sie im Abschnitt Wiederherstellen in auf Bestimmtes Datum und bestimmte Uhrzeit.

  8. Verwenden Sie die Felder Datum und Uhrzeit oder den Schieberegler, um ein bestimmtes Datum und eine bestimmte Uhrzeit anzugeben, bis zu dem die Wiederherstellung ausgeführt werden soll. Klicken Sie auf OK.

    HinweisHinweis

    Ändern Sie im Feld Zeitachsenintervall die auf der Zeitachse angezeigte Zeitdauer.

  9. Nachdem Sie den gewünschten Zeitpunkt für die Wiederherstellung angegeben haben, stellt der Datenbankwiederherstellungsberater sicher, dass die Spalte Wiederherstellen des Rasters Wiederherzustellende Sicherungssätze nur die Sicherungen angezeigt, die für die Wiederherstellung bis zu diesem Zeitpunkt benötigt werden. Die ausgewählten Sicherungen machen den empfohlenen Wiederherstellungsplan für Ihre Zeitpunktwiederherstellung aus. Verwenden Sie nach Möglichkeit nur die für diesen Wiederherstellungsvorgang ausgewählten Sicherungen.

    Informationen zu den Spalten im Raster Wiederherzustellende Sicherungssätze finden Sie unter Datenbank wiederherstellen (Seite 'Allgemein'). Informationen zum Datenbankwiederherstellungsberater finden Sie unter Übersicht über Wiederherstellungsvorgänge (SQL Server).

  10. Auf der Seite Optionen im Bereich Wiederherstellungsoptionen können Sie entsprechend Ihren Anforderungen die folgenden Optionen auswählen:

    • Vorhandene Datenbank überschreiben (WITH REPLACE)

    • Replikationseinstellungen beibehalten (WITH KEEP_REPLICATION)

    • Zugriff auf die wiederhergestellte Datenbank einschränken (WITH RESTRICTED_USER)

    Weitere Informationen zu diesen Optionen finden Sie unter Datenbank wiederherstellen (Seite Optionen).

  11. Aktivieren Sie eine Option für das Feld Wiederherstellungsstatus. In diesem Feld wird der Status der Datenbank nach dem Wiederherstellungsvorgang bestimmt.

    • RESTORE WITH RECOVERY ist das Standardverhalten, das die Datenbank betriebsbereit belässt, indem für Transaktionen ohne Commit ein Rollback ausgeführt wird. Zusätzliche Transaktionsprotokolle können nicht wiederhergestellt werden. Wählen Sie diese Option nur aus, wenn Sie alle benötigten Sicherungen jetzt wiederherstellen möchten.

    • RESTORE WITH NORECOVERY belässt die Datenbank nicht betriebsbereit und führt kein Rollback für Transaktionen ohne Commit aus. Zusätzliche Transaktionsprotokolle können wiederhergestellt werden. Die Datenbank kann erst verwendet werden, wenn sie wiederhergestellt wurde.

    • RESTORE WITH STANDBY belässt die Datenbank im schreibgeschützten Modus. Diese Option macht Transaktionen rückgängig, für die noch kein Commit ausgeführt wurde, speichert die Umkehraktionen aber in einer Standbydatei, damit die Auswirkungen der Wiederherstellung rückgängig gemacht werden können.

    Beschreibungen dieser Optionen finden Sie unter Datenbank wiederherstellen (Seite Optionen).

  12. Erstellen der Sicherung des Protokollfragments vor dem Wiederherstellen wird ausgewählt, wenn es für den ausgewählten Zeitpunkt erforderlich ist. Sie müssen diese Einstellung nicht ändern, können das Protokollfragment jedoch sichern, auch wenn es nicht erforderlich ist.

  13. Bei Wiederherstellungsvorgängen treten möglicherweise Fehler auf, wenn aktive Verbindungen zur Datenbank bestehen. Aktivieren Sie die Option Bestehende Verbindungen schließen, um sicherzustellen, dass alle aktiven Verbindungen zwischen Management Studio und der Datenbank geschlossen werden. Durch die Aktivierung dieses Kontrollkästchens wechselt die Datenbank in einen Einzelbenutzermodus, bevor Wiederherstellungsvorgänge ausgeführt werden. Außerdem wird dadurch die Datenbank auf einen Multibenutzermodus festgelegt, wenn der Vorgang abgeschlossen ist.

  14. Wählen Sie Bestätigung vor Wiederherstellen jeder einzelnen Sicherung aus, wenn Sie zwischen jedem Wiederherstellungsvorgang zur Bestätigung aufgefordert werden möchten. Dies ist in der Regel nur bei großen Datenbanken und bei der gewünschten Überwachung des Status des Wiederherstellungsvorgangs erforderlich.

[Nach oben]

Verwenden von Transact-SQL

Vorbereitungen

Die Wiederherstellung zu einem bestimmten Zeitpunkt erfolgt immer aus einer Protokollsicherung. In jeder RESTORE LOG-Anweisung der Wiederherstellungssequenz müssen Sie den Zielzeitpunkt oder die Transaktion in einer identischen STOPAT-Klausel angeben. Als Voraussetzung für eine Zeitpunktwiederherstellung müssen Sie zuerst eine vollständige Datenbanksicherung wiederherstellen, deren Endpunkt vor dem Zielwiederherstellungszeitpunkt liegt. Diese vollständige Datenbanksicherung kann älter als die letzte vollständige Datenbanksicherung sein, solange Sie dann jede nachfolgende Protokollsicherung wiederherstellen, bis zu und einschließlich der Protokollsicherung, die den Zielzeitpunkt enthält.

Damit Sie besser ermitteln können, welche Datenbanksicherung wiederhergestellt werden soll, können Sie in der RESTORE DATABASE-Anweisung die WITH STOPAT-Klausel angeben, um einen Fehler auszulösen, wenn eine Datensicherung für den angegebenen Zielzeitpunkt zu aktuell ist. Die vollständige Datensicherung wird immer wiederhergestellt, auch wenn sie den Zielzeitpunkt enthält.

Grundlegende Transact-SQL-Syntax

RESTORE LOG database_name FROM <backup_device> WITH STOPAT = time**,** RECOVERY…

Der Wiederherstellungszeitpunkt ist der Transaktionscommit, der zuletzt vor oder genau zu dem datetime-Wert erfolgte, der für time angegeben wird.

Wenn Sie nur die Änderungen vor dem angegebenen Zeitpunkt wiederherstellen möchten, geben Sie für die einzelnen Sicherungen, die Sie wiederherstellen, WITH STOPAT = time an. Damit stellen Sie sicher, dass der Zielzeitpunkt nicht überschritten wird.

So stellen Sie eine Datenbank bis zu einem Zeitpunkt wieder her

HinweisHinweis

Ein Beispiel für diese Prozedur finden Sie weiter unten in diesem Abschnitt unter Beispiel (Transact-SQL).

  1. Stellen Sie eine Verbindung mit der Serverinstanz her, auf der Sie die Datenbank wiederherstellen möchten.

  2. Führen Sie die RESTORE DATABASE-Anweisung mithilfe der Option NORECOVERY aus.

    HinweisHinweis

    Wenn in einer Teilwiederherstellungssequenz eine FILESTREAM-Dateigruppe ausgeschlossen wird, wird die Wiederherstellung bis zu einem bestimmten Zeitpunkt nicht unterstützt. Sie können das Fortsetzen der Wiederherstellungssequenz erzwingen. Die FILESTREAM-Dateigruppen, die nicht in die RESTORE-Anweisung eingeschlossen werden, können jedoch zu keinem Zeitpunkt wiederhergestellt werden. Wenn Sie eine Wiederherstellung bis zu einem bestimmten Zeitpunkt erzwingen möchten, geben Sie die CONTINUE_AFTER_ERROR-Option zusammen mit der Option STOPAT, STOPATMARK oder STOPBEFOREMARK an. Diese müssen Sie auch in den folgenden RESTORE LOG-Anweisungen angeben. Wenn Sie CONTINUE_AFTER_ERROR angeben, ist die Teilwiederherstellungssequenz erfolgreich, und die FILESTREAM-Dateigruppe wird nicht mehr wiederherstellbar.

  3. Stellen Sie die letzte differenzielle Datenbanksicherung, sofern vorhanden, wieder her, ohne dabei die Datenbank wiederherzustellen (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  4. Wenden Sie jede einzelne Transaktionsprotokollsicherung in derselben Reihenfolge an, in der sie erstellt wurde, und geben Sie dabei den Zeitpunkt an, zu dem die Wiederherstellung des Protokolls beendet werden soll (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT**=** time**,** RECOVERY).

    HinweisHinweis

    Die Optionen RECOVERY und STOPAT. Wenn die Transaktionsprotokollsicherung den geforderten Zeitpunkt nicht enthält (z. B. wenn der angegebene Zeitpunkt hinter dem Zeitpunkt liegt, bis zu dem das Transaktionsprotokoll reicht), wird eine Warnung erzeugt, und die Datenbank wird nicht wiederhergestellt.

Beispiel (Transact-SQL)

Im folgenden Beispiel wird eine Datenbank in den am April 15, 2020 um 12:00 AM bestehenden Status wiederhergestellt und ein Wiederherstellungsvorgang gezeigt, der mehrere Protokollsicherungen umfasst. Auf dem Sicherungsmedium AdventureWorksBackups ist die wiederherzustellende vollständige Datenbanksicherung der dritte Sicherungssatz auf dem Medium (FILE = 3). Die erste Protokollsicherung ist der vierte Sicherungssatz (FILE = 4). Die zweite Protokollsicherung ist der fünfte Sicherungssatz (FILE = 5).

Wichtiger HinweisWichtig

Für die AdventureWorks2012 -Datenbank wird das einfache Wiederherstellungsmodell verwendet. Um Protokollsicherungen zu ermöglichen, wurde für die Datenbank vor dem Erstellen einer vollständigen Datenbanksicherung mithilfe von ALTER DATABASE AdventureWorks SET RECOVERY FULL die Verwendung des vollständigen Wiederherstellungsmodells festgelegt.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks WITH RECOVERY; 
GO

[Nach oben]

Verwandte Aufgaben

Siehe auch

Verweis

backupset (Transact-SQL)

RESTORE (Transact-SQL)

RESTORE HEADERONLY (Transact-SQL)