Freigeben über


Vollständige Datenbankwiederherstellungen (vollständiges Wiederherstellungsmodell)

Bei einer vollständigen Datenbankwiederherstellung besteht das Ziel darin, die gesamte Datenbank wiederherzustellen. Die gesamte Datenbank ist für die Dauer der Wiederherstellung offline. Bevor ein Teil der Datenbank online gehen kann, werden alle Daten zu einem konsistenten Zeitpunkt wiederhergestellt, an dem alle Teile der Datenbank im selben zeitlichen Zustand sind und keine unbestätigten Transaktionen vorhanden sind.

Nach der Wiederherstellung ihrer Datensicherung oder Sicherungen müssen Sie nach dem vollständigen Wiederherstellungsmodell alle nachfolgenden Transaktionsprotokollsicherungen wiederherstellen und dann die Datenbank wiederherstellen. Sie können eine Datenbank innerhalb einer dieser Protokollsicherungen auf einen bestimmten Wiederherstellungspunkt wiederherstellen. Der Wiederherstellungspunkt kann ein bestimmtes Datum und eine uhrzeit, eine markierte Transaktion oder eine Protokollsequenznummer (Log Sequence Number, LSN) sein.

Beim Wiederherstellen einer Datenbank, insbesondere unter dem vollständigen Wiederherstellungsmodell oder dem Massenprotokollierungsmodell, sollten Sie eine einzelne Wiederherstellungssequenz verwenden. Eine Wiederherstellungssequenz besteht aus einem oder mehreren Wiederherstellungsvorgängen, bei denen Daten während einer oder mehrerer Phasen der Wiederherstellung bewegt werden.

Von Bedeutung

Es wird empfohlen, Keine Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen anzufügen oder wiederherzustellen. Diese Datenbanken können schädlichen Code enthalten, der unbeabsichtigten Transact-SQL Code ausführen oder Fehler verursachen kann, indem das Schema oder die physische Datenbankstruktur geändert wird. Bevor Sie eine Datenbank aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, führen Sie DBCC CHECKDB auf der Datenbank auf einem Nichtproduktserver aus, und überprüfen Sie den Code, z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code, in der Datenbank.

In diesem Thema:

Hinweis

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

Wiederherstellen einer Datenbank zum Fehlerpunkt

In der Regel umfasst das Wiederherstellen einer Datenbank zum Fehlerpunkt die folgenden grundlegenden Schritte:

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

    Von Bedeutung

    Beim Massenprotokollierungsmodell erfordert das Sichern eines Protokolls, das Massenprotokollvorgänge enthält, Zugriff auf alle Datendateien in der Datenbank. Wenn auf die Datendateien nicht zugegriffen werden kann, kann das Transaktionsprotokoll nicht gesichert werden. In diesem Fall müssen Sie alle Änderungen, die seit der letzten Protokollsicherung vorgenommen wurden, manuell wiederholen.

    Weitere Informationen finden Sie unter Tail-Log Sicherungen (SQL Server).

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

  3. Falls differenzielle Sicherungen existieren, stellen Sie die aktuellste Sicherung wieder her, ohne die Datenbank wiederherzustellen (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).

    Durch das Wiederherstellen der neuesten differenziellen Sicherung wird die Anzahl der Protokollsicherungen reduziert, die wiederhergestellt werden müssen.

  4. Beginnend mit der ersten Transaktionsprotokollsicherung, die nach der soeben wiederhergestellten Sicherung erstellt wurde, stellen Sie die Protokolle in Sequenz mit NORECOVERY wieder her.

  5. Wiederherstellen der Datenbank (RESTORE DATABASE database_name WITH RECOVERY). Alternativ kann dieser Schritt mit der Wiederherstellung der letzten Protokollsicherung kombiniert werden.

Die folgende Abbildung zeigt diese Wiederherstellungssequenz. Nachdem ein Fehler aufgetreten ist (1), wird eine Tail-Log-Sicherung erstellt (2). Als Nächstes wird die Datenbank an dem Fehlerpunkt wiederhergestellt. Dies umfasst das Wiederherstellen einer Datenbanksicherung, eine nachfolgende differenzielle Sicherung und jede Protokollsicherung, die nach der differenziellen Sicherung einschließlich der Tailprotokollsicherung erstellt wurde.

Vollständige Datenbankwiederherstellung zum Zeitpunkt eines Fehlers

Hinweis

Wenn Sie eine Datenbanksicherung auf einer anderen Serverinstanz wiederherstellen, sehen Sie Datenbanken mit Sicherung und Wiederherstellung kopieren.

Grundlegende Transact-SQL RESTORE-Syntax

Die grundlegende RESTORE SyntaxTransact-SQL für die Wiederherstellungssequenz in der vorherigen Abbildung lautet wie folgt:

  1. WIEDERHERSTELLEN DATENBANK AUSvollständige Datenbanksicherung MIT NORECOVERY;

  2. DATENBANK datenbank AUS full_differential_backup MIT NORECOVERY WIEDERHERSTELLEN;

  3. RESTORE LOG Datenbank FROM Protokollsicherung WITH NORECOVERY;

    Wiederholen Sie diesen Wiederherstellungsprotokollschritt für jede zusätzliche Protokollsicherung.

  4. DATENBANK datenbank MIT WIEDERHERSTELLUNG WIEDERHERSTELLEN;

Beispiel: Wiederherstellen des Fehlerpunkts (Transact-SQL)

Das folgende Transact-SQL Beispiel zeigt die wesentlichen Optionen in einer Wiederherstellungssequenz, mit der die Datenbank zum Fehlerpunkt wiederhergestellt wird. Im Beispiel wird eine Tail-Log-Protokollsicherung der Datenbank erstellt. Als Nächstes stellt das Beispiel eine vollständige Datenbanksicherung und Protokollsicherung wieder her und stellt dann die Tailprotokollsicherung wieder her. Im Beispiel wird die Datenbank in einem separaten, letzten Schritt wiederhergestellt.

Hinweis

In diesem Beispiel wird eine Datenbanksicherung und Protokollsicherung verwendet, die im Abschnitt "Verwenden von Datenbanksicherungen unter dem vollständigen Wiederherstellungsmodell" in vollständigen Datenbanksicherungen (SQL Server) erstellt wird. Vor der Datenbanksicherung wurde die AdventureWorks2012-Beispieldatenbank so festgelegt, dass das vollständige Wiederherstellungsmodell verwendet wird.

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  

Wiederherstellen einer Datenbank bis zu einem bestimmten Punkt innerhalb eines Log-Backups

Unter dem vollständigen Wiederherstellungsmodell kann eine vollständige Datenbank in der Regel zu einem bestimmten Zeitpunkt, einer markierten Transaktion oder einem LSN innerhalb einer Protokollsicherung wiederhergestellt werden. Unter dem Massenprotokollierungs-Wiederherstellungsmodell ist die zeitpunktbezogene Wiederherstellung nicht möglich, wenn die Protokollsicherung Massenprotokollierungsänderungen enthält.

Beispielszenarios für die zeitpunktbezogene Wiederherstellung

Im folgenden Beispiel wird davon ausgegangen, dass für ein unternehmenskritisches Datenbanksystem täglich um Mitternacht eine vollständige Datenbanksicherung erstellt wird, stündlich von Montag bis Samstag eine differenzielle Datenbanksicherung erstellt wird und alle 10 Minuten im Tagesverlauf Transaktionsprotokollsicherungen erstellt werden. Gehen Sie wie folgt vor, um die Datenbank in den Zustand vom Mittwoch um 5:19 Uhr zurückzusetzen:

  1. Stellen Sie die vollständige Datenbanksicherung wieder her, die dienstags 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 5:20 Uhr erstellt wurde, und geben Sie an, dass der Wiederherstellungsvorgang nur für Transaktionen gilt, die vor 5:19 Uhr aufgetreten sind.

Alternativ, wenn die Datenbank am Donnerstag um 3:04 Uhr wiederhergestellt werden muss, die differenzielle Datenbanksicherung, die um 3:00 Uhr am Donnerstag erstellt wurde, jedoch nicht verfügbar ist, tun Sie Folgendes:

  1. Stellen Sie die Datenbanksicherung wieder her, die mittwochs 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 von 2:10 Uhr auf 3:00 Uhr erstellt wurden.

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

Hinweis

Ein Beispiel für eine zeitpunktbezogene Wiederherstellung finden Sie unter Wiederherstellen einer SQL Server-Datenbank zu einem bestimmten 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 an einem Punkt in einer Protokollsicherung wieder her

Siehe auch

RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
Anwenden von Transaktionsprotokollsicherungen (SQL Server)
sp_addumpdevice (Transact-SQL)
Vollständige Datenbanksicherungen (SQL Server)
Differenzielle Sicherungen (SQL Server)
Übersicht über die Sicherung (SQL Server)
Übersicht über Wiederherstellungsvorgänge (SQL Server)