Freigeben über


Vorgehensweise: Anwenden einer Transaktionsprotokollsicherung (Transact-SQL)

Damit eine Transaktionsprotokollsicherung auf eine Datenbank angewendet werden kann, müssen die folgenden Bedingungen erfüllt sein:

  • Bevor die letzte vollständige oder differenzielle Datenbanksicherung erstellt wurde, muss die Datenbank das vollständige Wiederherstellungsmodell oder das massenprotokollierte Wiederherstellungsmodell verwendet haben.

  • Für die Wiederherstellungssequenz muss WITH NORECOVERY angegeben sein, wenn frühere Sicherungen wiederhergestellt werden.

  • Protokollsicherungen müssen ohne Lücken in der Protokollkette in der Reihenfolge angewendet werden, in der sie erstellt wurden. Außer für die letzte Protokollsicherung müssen Sie WITH NORECOVERY wie folgt verwenden:

    RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
    
  • Beim Anwenden der letzten Protokollsicherung haben Sie die beiden folgenden Möglichkeiten:

    • Wiederherstellen der Datenbank als Teil der letzten BACKUP LOG-Anweisung:

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;
      GO
      
    • Warten, bis die Datenbank durch Verwendung einer getrennten RESTORE DATABASE-Anweisung wiederhergestellt wird:

      RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; 
      RESTORE DATABASE <database_name> WITH RECOVERY;
      GO
      

      Das Warten mit der Wiederherstellung der Datenbank ermöglicht eine Überprüfung, ob alle erforderlichen Protokollsicherungen wiederhergestellt wurden. Diese Vorgehensweise ist oft ratsam, wenn Sie eine Wiederherstellung bis zu einem bestimmten Zeitpunkt ausführen.

Wichtiger HinweisWichtig

Es ist empfehlenswert, entweder WITH NORECOVERY oder WITH RECOVERY in jeder RESTORE-Anweisung immer explizit anzugeben, um Mehrdeutigkeit zu vermeiden. Dies ist besonders beim Schreiben von Skripts wichtig.

So wenden Sie eine Transaktionsprotokollsicherung an

  1. Führen Sie die RESTORE LOG-Anweisung aus, um die Transaktionsprotokollsicherung anzuwenden, und geben Sie dabei Folgendes an:

    • Den Namen der Datenbank, auf die das zu sichernde Transaktionsprotokoll angewendet wird.

    • Das Sicherungsmedium, von dem die Transaktionsprotokollsicherung wiederhergestellt wird.

    • Die NORECOVERY-Klausel.

    Diese Anweisung weist die folgende Basissyntax auf:

    RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY.

    Dabei ist database_name der Name der Datenbank und <backup_device>der Name des Mediums, auf dem sich die wiederherzustellende Protokollsicherung befindet.

  2. Wiederholen Sie Schritt 1 für jede anzuwendende Transaktionsprotokollsicherung.

  3. Nach dem Wiederherstellen der letzten Sicherung in der Wiederherstellungssequenz verwenden Sie die folgende Anweisung, um die Datenbank wiederherzustellen:

    RESTORE database_name WITH RECOVERY

    Wichtiger HinweisWichtig

    Wenn Sie eine Spiegeldatenbank erstellen, lassen Sie den Wiederherstellungsschritt aus. Eine Spiegeldatenbank muss im Status RESTORING verbleiben.

Beispiel

Standardmäßig verwendet die AdventureWorks-Datenbank das einfache Wiederherstellungsmodell. Für die folgenden Beispiele ist es erforderlich, dass die Datenbank folgendermaßen für die Verwendung des vollständigen Wiederherstellungsmodells geändert wird:

ALTER DATABASE AdventureWorks SET RECOVERY FULL

A. Anwenden einer einzelnen Transaktionsprotokollsicherung

Im folgenden Beispiel wird mit der Wiederherstellung der AdventureWorks-Datenbank mithilfe einer vollständigen Datenbanksicherung begonnen, die sich auf einem Sicherungsmedium mit dem Namen AdventureWorks_1 befindet. Dann wird die erste Transaktionsprotokollsicherung angewendet, die sich auf einem Sicherungsmedium mit dem Namen AdventureWorks_log befindet. Schließlich wird die Datenbank im Beispiel wiederhergestellt.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorks_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 1,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
   WITH RECOVERY
GO

B. Anwenden mehrerer Transaktionsprotokollsicherungen

Im folgenden Beispiel wird mit der Wiederherstellung der AdventureWorks-Datenbank mithilfe einer vollständigen Datenbanksicherung begonnen, die sich auf einem Sicherungsmedium mit dem Namen AdventureWorks_1 befindet. Dann werden nacheinander die ersten drei Transaktionsprotokollsicherungen angewendet, die sich auf einem Sicherungsmedium mit dem Namen AdventureWorks_log befinden. Schließlich wird die Datenbank im Beispiel wiederhergestellt.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorks_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 1,
   NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 2,
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 3,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
   WITH RECOVERY
GO