Freigeben über


Vollständige Datenbankwiederherstellungen (vollständiges Wiederherstellungsmodell)

Das Ziel einer vollständigen Datenbankwiederherstellung besteht in der Wiederherstellung der gesamten Datenbank. Die gesamte Datenbank ist für die Dauer der Wiederherstellung offline. Bevor Teile der Datenbank wieder online zur Verfügung gestellt werden können, müssen alle Daten bis zu einem konsistenten Zeitpunkt wiederhergestellt werden. Ein solcher Punkt ist gegeben, wenn für alle Teile der Datenbank derselbe Zeitpunkt gilt und keine Transaktionen ohne Commit vorhanden sind.

Bei Verwendung des vollständigen Wiederherstellungsmodells müssen Sie nach dem Wiederherstellen der Datensicherung(en) alle nachfolgenden Transaktionsprotokollsicherungen und anschließend die Datenbank wiederherstellen. Sie können eine Datenbank bis zu einem bestimmten Wiederherstellungspunkt innerhalb einer dieser Protokollsicherungen wiederherstellen. Der Wiederherstellungspunkt kann einem bestimmten Datum mit einer bestimmten Uhrzeit, einer markierten Transaktion oder einer Protokollsequenznummer (Log Sequence Number, LSN) entsprechen.

Beim Wiederherstellen einer Datenbank sollten Sie vor allem beim vollständigen und massenprotokollierten Wiederherstellungsmodell eine einzelne Wiederherstellungssequenz verwenden. Eine Wiederherstellungssequenz besteht aus mindestens einem Wiederherstellungsvorgang, mit dessen Hilfe Daten mindestens eine Wiederherstellungsphase durchlaufen.

SicherheitshinweisSicherheitshinweis

Es empfiehlt sich, keine Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen anzufügen oder wiederherzustellen. Diese Datenbanken können bösartigen Code enthalten, der möglicherweise unbeabsichtigten Transact-SQL-Code ausführt oder Fehler durch Ändern des Schemas oder der physischen Datenbankstruktur erzeugt. Bevor Sie eine Datenbank aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, führen Sie auf einem Nichtproduktionsserver DBCC CHECKDB in der Datenbank aus. Überprüfen Sie außerdem den Code in der Datenbank, beispielsweise gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

In diesem Thema:

  • Wiederherstellen einer Datenbank bis zum Zeitpunkt des Fehlers

  • Wiederherstellen einer Datenbank bis zu einem Punkt in einer Protokollsicherung

  • Verwandte Aufgaben

HinweisHinweis

Informationen zur Unterstützung von Sicherungskopien früherer SQL Server-Versionen finden Sie im Kapitel RESTORE (Transact-SQL) im Abschnitt "Kompatibilitätsunterstützung".

Wiederherstellen einer Datenbank bis zum Zeitpunkt des Fehlers

Zum Wiederherstellen einer Datenbank bis zum Zeitpunkt des Auftretens eines Fehlers werden in der Regel die folgenden grundlegenden Schritte ausgeführt:

  1. Sichern Sie das aktive Transaktionsprotokoll (das Protokollfragment). Dadurch wird eine Sicherung des Protokollfragments erstellt. Wenn das aktive Transaktionsprotokoll nicht verfügbar ist, gehen alle Transaktionen in diesem Teil des Protokolls verloren.

    Wichtiger HinweisWichtig

    Beim massenprotokollierten Wiederherstellungsmodell ist zum Sichern eines Protokolls, das massenprotokollierte Vorgänge enthält, der Zugriff auf alle Datendateien in der Datenbank erforderlich. Wenn der Zugriff auf die Datendateien nicht möglich ist, kann das Transaktionsprotokoll nicht gesichert werden. In diesem Fall müssen Sie alle Änderungen seit der letzten Protokollsicherung erneut manuell vornehmen.

    Weitere Informationen finden Sie unter Protokollfragmentsicherungen (SQL Server).

  2. Stellen Sie die letzte vollständige Datenbanksicherung wieder her, ohne die Datenbank selbst wiederherzustellen (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  3. Wenn differenzielle Sicherungen vorhanden sind, stellen Sie die neueste Sicherung wieder her, ohne die Datenbank selbst wiederherzustellen (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).

    Durch die Wiederherstellung der neuesten differenziellen Sicherung wird die Anzahl der wiederherzustellenden Protokollsicherungen reduziert.

  4. Stellen Sie ausgehend von der ersten Transaktionsprotokollsicherung, die Sie nach der soeben wiederhergestellten Sicherung erstellt haben, die Protokolle der Reihe nach mit NORECOVERY wieder her.

  5. Stellen Sie die Datenbank wieder her (RESTORE DATABASE database_name WITH RECOVERY). Alternativ kann dieser Schritt mit dem Wiederherstellen der letzten Protokollsicherung kombiniert werden.

Die folgende Abbildung stellt diese Wiederherstellungssequenz dar: Wenn ein Fehler aufgetreten ist (1), wird eine Sicherung des Protokollfragments erstellt (2). Danach wird die Datenbank bis zu dem Zeitpunkt des Auftretens des Fehlers wiederhergestellt. Dieser Vorgang umfasst die Wiederherstellung einer Datenbanksicherung, eine nachfolgende differenzielle Sicherung sowie alle Protokollsicherungen nach der differenziellen Sicherung, einschließlich der Sicherung des Protokollfragments.

Vollständige Datenbankwiederherstellung bis zum Auftreten des Fehlers

HinweisHinweis

Siehe Kopieren von Datenbanken durch Sichern und Wiederherstellen, wenn Sie eine Datenbanksicherung auf einer anderen Serverinstanz wiederherstellen.

Grundlegende Transact-SQL-RESTORE-Syntax

Die grundlegende RESTORE Transact-SQL-Syntax für die Wiederherstellungssequenz in der vorangehenden Abbildung sieht folgendermaßen aus:

  1. RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

  2. RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

  3. RESTORE LOG database FROM log_backup WITH NORECOVERY;

    Wiederholen Sie diesen Schritt der Protokollwiederherstellung für jede zusätzliche Protokollsicherung.

  4. RESTORE DATABASE database WITH RECOVERY;

[Nach oben]

Beispiel: Wiederherstellen bis zum Zeitpunkt des Fehlers (Transact-SQL)

Im folgenden Transact-SQL-Beispiel werden die wesentlichen Optionen in einer Wiederherstellungssequenz veranschaulicht, mit der die Datenbank zum Zeitpunkt des Fehlers wiederhergestellt wird. Im Beispiel wird eine Sicherung des Protokollfragments der Datenbank erstellt. Als Nächstes wird im Beispiel eine vollständige Datenbanksicherung und Protokollsicherung wiederhergestellt. Anschließend wird die Sicherung des Protokollfragments wiederhergestellt. Im Beispiel wird die Datenbank in einem separaten, abschließenden Schritt wiederhergestellt.

HinweisHinweis

In diesem Beispiel werden eine Datenbanksicherung und eine Protokollsicherung verwendet, die im Abschnitt "Verwenden von Datenbanksicherungen im vollständigen Wiederherstellungsmodell" in Vollständige Datenbanksicherungen (SQL Server) erstellt werden. Vor der Datenbanksicherung wurde die Beispieldatenbank AdventureWorks2012 zur Verwendung des vollständigen Wiederherstellungsmodells festgelegt.

USE master;
--Create tail-log backup.
BACKUP LOG AdventureWorks2012 
TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'  
   WITH NORECOVERY; 
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2012 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' 
  WITH FILE=1, 
    NORECOVERY;

--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks2012 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' 
  WITH FILE=2, 
    NORECOVERY;

--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks2012 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
  WITH FILE=3, 
    NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks2012 WITH RECOVERY;
GO

[Nach oben]

Wiederherstellen einer Datenbank bis zu einem Punkt in einer Protokollsicherung

Beim vollständigen Wiederherstellungsmodell kann eine vollständige Datenbankwiederherstellung in der Regel bis zu einem Zeitpunkt, einer markierten Transaktion oder einer LSN in einer Protokollsicherung wiederhergestellt werden. Wenn jedoch beim massenprotokollierten Wiederherstellungsmodell die Protokollsicherung massenprotokollierte Änderungen enthält, ist die Zeitpunktwiederherstellung nicht möglich.

Beispielszenarien für Zeitpunktwiederherstellungen

Im folgenden Beispiel wird angenommen, dass ein unternehmenswichtiges Datenbanksystem vorliegt, für das täglich um Mitternacht eine vollständige Datenbanksicherung erstellt wird. Eine differenzielle Datenbanksicherung wird von Montag bis Samstag stündlich erstellt, und Transaktionsprotokollsicherungen werden tagsüber alle 10 Minuten erstellt. Um die Datenbank in dem Status wiederherzustellen, der am Mittwoch um 5:19 Uhr vorlag, gehen Sie wie folgt vor:

  1. Stellen Sie die vollständige Datenbanksicherung wieder her, die am Dienstag um Mitternacht erstellt wurde.

  2. Stellen Sie die differenzielle Datenbanksicherung wieder her, die am Mittwoch um 5:00 Uhr erstellt wurde.

  3. Wenden Sie die Transaktionsprotokollsicherung an, die am Mittwoch um 5:10 Uhr erstellt wurde.

  4. Wenden Sie die Transaktionsprotokollsicherung an, die am Mittwoch um 5:20 Uhr erstellt wurde, und geben Sie dabei an, dass beim Wiederherstellungsprozess ausschließlich Transaktionen angewendet werden sollen, die vor 5:19 Uhr stattfanden.

Sie können auch folgendermaßen vorgehen, wenn die Datenbank in dem Status von Donnerstag um 3:04 Uhr wiederhergestellt werden soll, die um 3:00 Uhr erstellte differenzielle Datenbanksicherung jedoch nicht verfügbar ist:

  1. Stellen Sie die Datenbanksicherung wieder her, die am Mittwoch um Mitternacht erstellt wurde.

  2. Stellen Sie die differenzielle Datenbanksicherung wieder her, die am Donnerstag um 2:00 Uhr erstellt wurde.

  3. Wenden Sie alle Transaktionsprotokollsicherungen an, die am Donnerstag zwischen 2:10 Uhr und 3:00 Uhr erstellt wurden.

  4. Wenden Sie die Transaktionsprotokollsicherung an, die am Donnerstag um 3:10 Uhr erstellt wurde, und beenden Sie den Wiederherstellungsprozess um 3:04 Uhr.

HinweisHinweis

Ein Beispiel für eine Zeitpunktwiederherstellung finden Sie unter Wiederherstellen einer SQL Server-Datenbank zu einem Zeitpunkt (vollständiges Wiederherstellungsmodell).

Verwandte Aufgaben

So stellen Sie eine vollständige Datenbanksicherung wieder her

So stellen Sie eine differenzielle Datenbanksicherung wieder her

So stellen Sie eine Transaktionsprotokollsicherung wieder her

So stellen Sie eine Sicherung mithilfe von SQL Server Management Objects (SMO) wieder her

So stellen Sie eine Datenbank bis zu einem Punkt in einer Protokollsicherung wieder her

[Nach oben]

Siehe auch

Verweis

RESTORE (Transact-SQL)

BACKUP (Transact-SQL)

sp_addumpdevice (Transact-SQL)

Konzepte

Anwenden von Transaktionsprotokollsicherungen (SQL Server)

Vollständige Datenbanksicherungen (SQL Server)

Differenzielle Sicherungen (SQL Server)

Übersicht über Sicherungen [SQL Server]

Übersicht über Wiederherstellungsvorgänge (SQL Server)