Wiederherstellungspfade

Sie müssen das Konzept des Wiederherstellungspfades verstehen, wenn Sie differenzielle Sicherungen oder Protokollsicherungen verwenden und eine Datenbank mithilfe einer der folgenden Methoden bis zu einem früheren Zeitpunkt wiederherstellen:

  • Ausführen einer Wiederherstellung bis zu einem bestimmten Zeitpunkt
  • Ausführen einer Wiederherstellung, ohne vorher alle Protokollsicherungen oder die aktuellsten differenziellen Sicherungen wiederherzustellen.

Wenn Sie eine Datenbank zu einem früheren Wiederherstellungspunkt wiederherstellen und die Datenbank ab diesem Punkt verwenden, wird ein neuer Wiederherstellungspfad erstellt. Der Wiederherstellungspfad ist die Abfolge von Daten und Protokollsicherungen, mit der eine Datenbank zu einem bestimmten Zeitpunkt wiederhergestellt wurde, entweder durch normale Datenbankverwendung oder durch die Wiederherstellung bestimmter Daten und Protokolle. Ein Wiederherstellungspfad besteht aus einer eindeutigen Menge bestimmter Transformationen, auf deren Grundlage die Datenbank über einen bestimmten Zeitraum entwickelt und gleichzeitig die Konsistenz der Datenbank sichergestellt wurde. In der folgenden Abbildung wird die Beziehung zwischen einem Wiederherstellungspunkt und den resultierenden Wiederherstellungspfaden veranschaulicht.

Wiederherstellungspunkt und resultierende Wiederherstellungspfade

Im Allgemeinen wird mit einem Wiederherstellungspunkt auch ein neuer Wiederherstellungspfad gestartet, weil für die Transaktionen ein Rollback ausgeführt werden muss und sich die Datenbank in einem eindeutigen Status befindet. Die Protokollfolgenummern (Log Sequence Number, LSN) von bereits vorhandenen Sicherungen sind gegebenenfalls größer als die LSN des Wiederherstellungspunktes. Die LSNs dieser Sicherungen sind in einer Wiederherstellungsverzweigung enthalten, die nicht mit der vom aktuellen Wiederherstellungsvorgang erstellten Verzweigung übereinstimmt.

ms175078.note(de-de,SQL.90).gifHinweis:
Wenn Sie eine vollständige Datenbanksicherung wiederherstellen und beim Wiederherstellen der Datenbank keine andere Art der Sicherung verwenden, wird ein neuer Wiederherstellungspfad erstellt.

Bewährte Methode Sie sollten nach dem Wiederherstellen der Datenbank schnellstmöglich eine vollständige Datensicherung ausführen, um die Erstellung eines neuen Wiederherstellungspfades mit mehreren Wiederherstellungsverzweigungen zu vermeiden. Mit dieser Vorgehensweise können Sie sicherstellen, dass alle Sicherungen in einer einzelnen Wiederherstellungsverzweigung ausgeführt werden. Dies können Sie in der last_recovery_fork_guid-Spalte der backupset-Tabelle oder im RESTORE HEADERONLY-Resultset überprüfen.

In den folgenden Situationen wird ein neuer Wiederherstellungspfad erstellt, da die Datenbank nicht bis zum "Endzeitpunkt" wiederhergestellt wurde. Anschließend sind Sicherungen vorhanden, mit denen die Datenbank in zwei oder mehr Wiederherstellungspfaden ausgeführt werden kann, die alle denselben LSN-Bereich verwenden.

  • Wiederherstellen einer vollständigen sowie einer differenziellen Datenbanksicherung und Wiederherstellen der Datenbank ohne Anwenden vorhandener Transaktionsprotokollsicherungen.
  • Wiederherstellen der Datenbank am Ende einer anderen als der letzten differenziellen Sicherung.
  • Wiederherstellen der Datenbank am Ende einer anderen als der letzten Transaktionsprotokollsicherung.
  • Wiederherstellen der Datenbank zu einem bestimmten Zeitpunkt oder zu einer markierten Transaktion innerhalb einer Transaktionsprotokollsicherung.

Beispiel für einen Wiederherstellungspfad

In der folgenden Abbildung wird die Verzweigung eines neuen Wiederherstellungspfades bei der Wiederherstellung der Datenbank veranschaulicht. In der Abbildung werden eine vollständige Datenbanksicherung sowie eine Sequenz von vier Protokollsicherungen erstellt. Anschließend wird die Datenbank bis zum Ende der Protokollsicherung 2 wiederhergestellt, indem die vollständige Datenbanksicherung, Protokollsicherung 1 und Protokollsicherung 2 wiederhergestellt werden. Die Datenbank wird an diesem Punkt wiederhergestellt, wobei eine neue Wiederherstellungsverzweigung erstellt wird. Die Datenbank wird dann eine Zeitlang verwendet, und zwei oder mehr Transaktionsprotokollsicherungen, Protokollsicherung 5 und Protokollsicherung 6, werden erstellt.

Beispiel eines Wiederherstellungspfades

Die Datenbanksicherung und die ersten vier Protokollsicherungen befinden sich alle in Verzweigung 1. Die Protokollsicherungen 5 und 6 befinden sich in Verzweigung 2. In der Wiederherstellungsverzweigung sind die letzten LSN der Protokollsicherung 2 (Log_Backup_2.LastLSN) und die erste LSN von Protokollsicherung 5 (Log_Backup_5.FirstLSN) enthalten.

Innerhalb der Protokollsicherung 5 wird mit first_recovery_fork_guid die Verzweigung 1 identifiziert, und mit last_recovery_fork_guid wird die Verzweigung 2 identifiziert. Der Wiederherstellungspfad lautet Verzweigung 1, Verzweigung 2.

ms175078.note(de-de,SQL.90).gifHinweis:
Die Wiederherstellung bis zum Ende einer Protokollsicherung ist keine Voraussetzung für die Verzweigung in einen neuen Pfad.

So stellen Sie einen alten Pfad wieder her und führen auf dem Pfad einen Rollforward aus

Es wird empfohlen, die Verwendung eines alten Wiederherstellungspfades zu vermeiden. Dies lässt sich damit begründen, dass die Datenbank in zwei verschiedenen Zeitintervallen Transaktionen aufweist, für die ein Commit ausgeführt wurde. Bei Bedarf können Sie jedoch einen Rollforward auf einem alten Wiederherstellungspfad ausführen. Dazu müssen Sie die Sequenz der Sicherungen zurückverfolgen, die vor dem Erstellen des aktuellen Wiederherstellungspfades ausgeführt wurden. So können Sie auf Punkte des alten Pfades zugreifen, indem Sie Sicherungen verwenden, die vor einer Wiederherstellung zu einem bestimmten Zeitpunkt ausgeführt wurden.

ms175078.note(de-de,SQL.90).gifHinweis:
Zur Erstellung von zwei Datenbanken aus einem gemeinsamen übergeordneten Element muss für jede Datenbank der Wiederherstellungspfad berücksichtigt werden, der erforderlich ist, um das zeitliche Ende der entsprechenden Datenbank zu erreichen.

Ausgehend von den in der vorherigen Abbildung erstellten Sicherungen ist beispielsweise nach der Erstellung der Protokollsicherungen 5 und 6 immer noch eine Wiederherstellung bis zum Ende der Protokollsicherung 3 möglich, die sich im alten Wiederherstellungspfad befindet.

So führen Sie eine Wiederherstellung und einen Rollforward von einem alten auf einen neuen Pfad aus

Mit SQL Server-Datenbankmodul wird verhindert, dass in einer einzelnen Wiederherstellungssequenz Sicherungen verwendet werden, die nicht zusammenpassen, also einen Rollforward auf verschiedenen Wiederherstellungspfaden ausführen. Durch diese Einschränkung wird die Konsistenz der Datenbank auch nach dem Wiederherstellen sichergestellt.

Um eine Wiederherstellung und einen Rollforward für einen neuen Wiederherstellungspfad auszuführen, müssen Sie für die Sicherungen vor dem Wiederherstellungspunkt und für die Sicherungen nach dem Wiederherstellungspunkt unterschiedliche Wiederherstellungssequenzen erstellen.

  1. Stellen Sie die Sicherungen wieder her, die vor der Wiederherstellung und der Erstellung des neuen Wiederherstellungspfades ausgeführt wurden. Schließen Sie die Sicherung mit dem Wiederherstellungspunkt aus.
  2. Führen Sie auf dem neuen Wiederherstellungspfad einen Rollforward aus, indem Sie die seit Erstellen des Wiederherstellungspfades ausgeführten Sicherungen wiederherstellen.

Ausgehend von den in der vorherigen Abbildung erstellten Sicherungen wird beispielsweise angenommen, dass mit der Protokollsicherung 3 der Zeitraum zwischen 10:00 und 11:00 Uhr eingeschlossen wird. Es wurde eine Wiederherstellung bis zu einem bestimmten Zeitpunkt ausgeführt, bei der STOPAT**=10:**30 angegeben wurde. Dies führte zu einer Verzweigung des Wiederherstellungspfades und zu einer Erstellung einer neuen Wiederherstellungsverzweigung. Verzweigung 2.In der ersten Protokollsicherung auf der neuen Verzweigung, Protokollsicherung 5, ist dieselbe erste LSN enthalten wie in der Protokollsicherung 3. Damit wird Protokollsicherung 3 als veraltet ersetzt. Für die Wiederherstellung von Sicherungen im neuen Wiederherstellungspfad (der mit Verzweigung 1 beginnt und bei Verzweigung 2 endet) lautet die Wiederherstellungssequenz: Vollständige Datenbanksicherung, Protokollsicherung 1, Protokollsicherung 2, Protokollsicherung 5 und Protokollsicherung 6.

Verwalten von Wiederherstellungsverzweigungen

Eine Wiederherstellungsverzweigung umfasst einen Bereich von LSNs, die gemeinsam dieselbe GUID nutzen. Ein Wiederherstellungspfad stellt einen Bereich von LSNs dar, der von einem Startpunkt (LSN,GUID) zu einem Endpunkt (LSN,GUID) führt. Der Bereich von LSNs in einem Wiederherstellungspfad kann eine oder mehrere Wiederherstellungsverzweigungen von Anfang bis zum Ende durchsuchen. Eine neue Wiederherstellungsverzweigung entsteht immer dann, wenn eine Datenbank erstellt wird und mit RESTORE WITH RECOVERY eine Wiederherstellungsverzweigung generiert wird.

An einem Wiederherstellungs-Verzweigungspunkt (LSN,GUID) wird beim Ausführen von RESTORE WITH RECOVERY eine neue Wiederherstellungsverzweigung erstellt. Jeder Wiederherstellungs-Verzweigungspunkt legt für seine Wiederherstellungsverzweigungen eine Parent-Child-Beziehung fest.

Beim Wiederherstellen der Datenbank wird der Status der gesamten Datenbank, einschließlich der nächsten LSN, auf den Wiederherstellungspunkt festgelegt. LSNs werden dann beginnend ab fork_point_lsn wiederverwendet. Daher müssen Sicherungen beim Erstellen einer Wiederherstellungssequenz sowohl durch eine Wiederherstellungsverzweigung als auch durch die LSN verknüpft werden, weil dieselbe LSN auch in mehreren Verzweigungen vorkommen kann. In der folgenden Abbildung wird die Wiederverwendung von LSNs veranschaulicht. Dabei wird die Wiederverwendung von LSNs in verschiedenen Wiederherstellungsverzweigungen veranschaulicht.

Wiederverwendung von LSNs in verschiedenen Wiederherstellungs-Verzweigungspunkten

Wenn eine Wiederherstellungssequenz Sicherungen zum Durchsuchen einer Wiederherstellungsverzweigung enthält, muss beim Erstellen der Wiederherstellungssequenz sichergestellt werden, dass die verwendeten Sicherungen dem richtigen Wiederherstellungspfad bis zum Wiederherstellungspunkt folgen. Zu diesem Zweck sind backupset.first_recovery_fork_guid und backupset.last_recovery_fork_guid in den Sicherungen enthalten. Damit werden zwischen den Sicherungen Verknüpfungen erstellt. So wird sichergestellt, dass die Sequenz der richtigen Verzweigung folgt.

Mit den Werten in der backupset-Verlaufstabelle können Sie den zu verwendenden Sicherungssatz bestimmen:

  • Bei jeder wiederherzustellenden Protokollsicherung der Sequenz muss die first_recovery_fork_guid mit der last_recovery_fork_guid der davorliegenden Sicherung in der Sequenz übereinstimmen.
    first_recovery_fork_guid = last_recovery_fork_guid
  • Daten und differenzielle Sicherungen müssen ebenfalls verknüpft sein.
    Wenn die Protokollsicherung neben der letzten LSN einer vollständigen oder einer differenziellen Datenbanksicherung auch einen Verzweigungspunkt enthält, ist der Verknüpfungstest von der Position der letzten LSN relativ zum Verzweigungspunkt abhängig.
    Zu den Verknüpfungstests gehören folgende Parameter (bei Verwendung der Werte von backupset):
    • Wenn last_lsn kleiner oder gleich fork_point_lsn ist, stimmt die last_recovery_fork_guid der Daten oder der differenziellen Sicherung mit der first_recovery_fork_guid der Protokollsicherung überein. In der folgenden Abbildung wird der Fall veranschaulicht, dass last_lsn kleiner ist als fork_point_lsn.
      last_lsn ist kleiner als fork_point_lsn
    • Wenn last_lsn größer als fork_point_lsn ist, stimmt die last_recovery_fork_guid der Daten oder der differenziellen Sicherung mit der last_recovery_fork_guid der Protokollsicherung überein. In der folgenden Abbildung wird der Fall veranschaulicht, dass last_lsn größer ist als fork_point_lsn.
      last_lsn ist größer als fork_point_lsn
  • Bei einer differenziellen Sicherung müssen Sie die differenzielle Basis mithilfe von backupset.differential_base_guid suchen.
    Wenn die differenzielle Sicherung mehrere Basen enthält, ist backupset.differential_base_guid gleich NULL. In diesem Fall müssen Sie mithilfe von backupfile.differential_base_guid nacheinander für alle differenziellen Basen die entsprechende Datei bestimmen.

Siehe auch

Konzepte

Kopieren von Datenbanken durch Sichern und Wiederherstellen
Planen und Ausführen von Wiederherstellungssequenzen (vollständiges Wiederherstellungsmodell)
Einfügung in Protokollfolgenummern
Protokollfolgenummern und Wiederherstellungsplanung
Basis einer differenziellen Sicherung

Andere Ressourcen

Implementieren von Wiederherstellungsszenarien für SQL Server-Datenbanken

Hilfe und Informationen

Informationsquellen für SQL Server 2005