Grundlegendes zur Funktionsweise der Wiederherstellung von Sicherungen in SQL Server

Aktualisiert: 17. Juli 2006

Symbol, dass einen blauen Datenbankdatenträger zeigt. Dieses Thema ist für alle SQL Server-Datenbanken relevant.

Dateiwiederherstellung ist der Vorgang des Kopierens von Daten aus einer Sicherung und des Anwendens protokollierter Transaktionen auf die Daten, um ein Rollforward zum Zielwiederherstellungspunkt auszuführen. Eine Datensicherung oder eine differenzielle Sicherung enthält genügend Transaktionsprotokoll-Datensätze, um ein Rollforward der aktiven Transaktionen im Rahmen der Wiederherstellung jeder Sicherung ermöglichen. Jede Sicherung enthält außerdem genügend Protokolldaten, um ein Rollback für Transaktionen auszuführen, für die noch kein Commit ausgeführt wurde, und so die Datenbank in einen bezüglich der Transaktionen konsistenten, verwendbaren Status zu bringen. Der Prozess, bei dem ggf. für Transaktionen, für die kein Commit ausgeführt wurde, ein Rollforward ausgeführt wird und die Datenbank online geschaltet wird, wird als Wiederherstellung bezeichnet.

Rollforwardgruppe

Der Vorgang, bei dem protokollierte Änderungen auf Daten in einer Datenbank angewendet und die Daten bezüglich des Zeitpunkts aktualisiert werden, wird als Rollforward bezeichnet. Die Gruppe aller wiederhergestellten Daten wird als Rollforwardgruppe bezeichnet. Eine Rollforwardgruppe wird definiert durch das Wiederherstellen einer oder mehrerer Datensicherungen (Datenbanksicherung, Teilsicherung oder eine Reihe von Dateisicherungen). Wenn eine RESTORE-Anweisung Dateigruppen, Dateien oder Seiten angibt, werden nur diese Elemente in die Rollforwardgruppe aufgenommen. Andernfalls werden alle Dateien in der wiederhergestellten Sicherung in die Rollforwardgruppe aufgenommen. Wenn die vollständige Sicherung Protokolldatensätze enthält, wird für die wiederhergestellten Daten mithilfe dieses Protokolls ein Rollforward ausgeführt.

ms191455.note(de-de,SQL.90).gifHinweis:
Wenn Sie während der Wiederherstellung eine Dateigruppe angeben, umfasst die Wiederherstellung die gesamte Dateigruppe, wie sie zurzeit vorhanden ist, einschließlich aller Dateien, die der Dateigruppe seit der letzten Sicherung hinzugefügt wurden. Weitere Informationen finden Sie unter Steuern des Erstellens von hinzugefügten Dateien während eines Rollforwards.

Bei der Wiederherstellung einer differenziellen Sicherung kann es zum Überschreiben von Seiten in der Rollforwardgruppe mit Daten aus der differenziellen Sicherung kommen, wenn der Datenbank seit der differenziellen Basis Dateien hinzugefügt wurden. Weitere Informationen finden Sie unter Verwenden von differenziellen Sicherungen.

Beim Wiederherstellen einer differenziellen Sicherung wird eine Seite nur dann aktualisiert, wenn sich die Seite in der Rollforwardgruppe befindet, die Seite in der Sicherung enthalten ist und die RESTORE-Anweisung entweder die Seite bzw. ihre Datei oder gar keine Dateien oder Seiten auflistet.

Unter dem vollständigen und dem massenprotokollierten Wiederherstellungsmodell muss das Protokoll separat gesichert werden. Nach dem Wiederherstellen von Datensicherungen und (optional) differenziellen Sicherungen stellen Sie normalerweise die nachfolgenden Protokollsicherungen wieder her, um den Status der Datenbank unmittelbar vor dem Ausfall wiederherzustellen. Beim Wiederherstellen einer Protokollsicherung wird ein Rollforward für alle Seiten in der Rollforwardgruppe ausgeführt. Weitere Informationen zu Protokollsicherungen finden Sie unter Verwenden von Transaktionsprotokollsicherungen.

Wiederherstellungssequenzen

Jedes Wiederherstellungsszenario wird mithilfe eines Wiederherstellungsvorgangs bzw. mehrerer Wiederherstellungsvorgänge, einer sogenannten Wiederherstellungssequenz, implementiert. Jeder Wiederherstellungsvorgang entspricht einer bestimmten Transact-SQL-RESTORE-Anweisung. In einer Wiederherstellungssequenz durchlaufen betroffene Daten eine oder mehrere der Phasen der Wiederherstellung.

Weitere Informationen zu Transact-SQL-Wiederherstellungssequenzen und zu deren Erstellung finden Sie unter Verwenden von Wiederherstellungssequenzen für SQL Server-Datenbanken.

Phasen der Wiederherstellung

Eine Wiederherstellung ist ein aus mehreren Phasen bestehender Prozess. Zu den möglichen Phasen einer Wiederherstellung gehören die Datenkopierphase, die Rollforwardphase (Wiederholen) und die Rollbackphase (Rückgängigmachen).

  • Die Datenkopierphase umfasst das Kopieren aller Daten-, Protokoll- und Indexseiten aus den Sicherungsmedien einer Datenbank in die Datenbankdateien.
  • In der Rollforwardphase werden die protokollierten Transaktionen auf die aus der Sicherung kopierten Daten angewendet, um ein Rollforward für diese Daten zum Wiederherstellungspunkt auszuführen. An diesem Punkt weist eine Datenbank normalerweise Transaktionen auf, für die kein Commit ausgeführt wurde, und befindet sich in einem nicht verwendbaren Status. In diesem Fall ist eine Rollbackphase als Teil der Wiederherstellung der Datenbank erforderlich.
  • Die Rollbackphase (der erste Teil der Wiederherstellung) führt ein Rollback für alle Transaktionen aus, für die kein Commit ausgeführt wurde, und macht die Datenbank für Benutzer verfügbar. Nach der Rollbackphase können keine nachfolgenden Sicherungen wiederhergestellt werden.

Im restlichen Teil dieses Abschnitts wird näher auf diese Phasen eingegangen.

Datenkopierphase

Die erste Phase in jedem Wiederherstellungsvorgang ist die Datenkopierphase. Die Datenkopierphase initialisiert den Inhalt der wiederhergestellten Datenbank, Dateien oder Seiten. Diese Phase wird durch Datenbankwiederherstellungs-, Dateiwiederherstellungs- und Seitenwiederherstellungsvorgänge mithilfe vollständiger oder differenzieller Sicherungen ausgeführt.

Die Datenkopierphase umfasst das Kopieren aller Daten aus einer oder mehreren vollständigen Sicherungen und optional aus differenziellen Sicherungen und anschließend das Zurücksetzen der Inhalte der betroffenen Datenbank, Dateien oder Seiten auf den Zeitpunkt, zu dem sie durch diese Sicherungen erfasst wurden.

Die älteste Datei oder Seite in der Rollforwardgruppe bestimmt den Ausgangspunkt für die nächste Phase: Wiederholen (Rollforward)

Rollforwardphase

Rollforward (Wiederholung) ist der Prozess des Wiederholens protokollierter Änderungen an den Daten in der Rollforwardgruppe, um die Daten zu aktualisieren. Zum Ausführen eines Rollforwards verarbeitet das SQL Server-Datenbankmodul Protokollsicherungen, wie sie wiederhergestellt werden, beginnend mit dem in Datensicherungen enthaltenen Protokoll.

Die Wiederherstellung vermeidet unnötige Rollforwards. Wenn Daten beim Sichern schreibgeschützt waren und der Schreibschutz erhalten geblieben ist, ist ein Rollforward im Allgemeinen nicht erforderlich und wird ausgelassen.

Wiederherstellungspunkt

Das Ziel des Rollforwards ist das Wiederherstellen des ursprünglichen Zustands der Daten am Wiederherstellungspunkt. Der Wiederherstellungspunkt ist der vom Benutzer angegebene Punkt, bis zu dem die Daten wiederhergestellt werden sollen. Unter dem vollständigen Wiederherstellungsmodell können Sie den Wiederherstellungspunkt als bestimmten Zeitpunkt, als markierte Transaktion oder als Protokollfolgenummer angeben. Unter dem massenprotokollierten Wiederherstellungsmodell können Sie einen bestimmten Zeitpunkt nur wiederherstellen, wenn keine Massenvorgänge seit der vorherigen Protokollsicherung ausgeführt wurden.

Rollforwardkonsistenz

In der Rollforwardphase wird für die Daten immer ein Rollforward bis zu einem Punkt ausgeführt, der konsistent mit dem Status der Datenbank am Wiederherstellungspunkt ist (Rollforwardkonsistenz). Für alle Daten wird ein Rollforward bis zu einem Punkt ausgeführt, an dem der Vorgang rückgängig gemacht werden kann.

Der Status der Datenbank wird wie folgt durch die primäre Datei definiert:

  • Wenn die primäre Datei wiederhergestellt wird, bestimmt der Wiederherstellungspunkt den Status der gesamten Datenbank. Wenn eine Datenbank z. B. bis zu einem Zeitpunkt, kurz bevor eine Tabelle versehentlich gelöscht wurde, wiederhergestellt wird, muss die gesamte Datenbank bis zu demselben Zeitpunkt wiederhergestellt werden.
  • Wenn die primäre Datei nicht wiederhergestellt wird, ist der Datenbankstatus bekannt, und für die wiederhergestellten Daten wird ein Rollforward zu einem mit der Datenbank transaktionell konsistenten Wiederherstellungspunkt ausgeführt. Dies wird von SQL Server erzwungen.

Die Datenbank kann jedoch Änderungen enthalten, die von Transaktionen vorgenommen wurden, für die am Wiederherstellungspunkt noch kein Commit ausgeführt wurde. Für die Onlinewiederherstellung werden Daten bis zu einem Zeitpunkt wiederhergestellt, der mit dem aktuellen Status des Onlineteils der Datenbank konsistent ist.

Eine differenzielle Sicherung springt vorwärts zu dem Zeitpunkt, zu dem die differenzielle Sicherung erstellt wurde. Seiten in der Rollforwardgruppe werden mit aktuelleren Seiten aus der differenziellen Sicherung überschrieben.

Rollbackphase und Wiederherstellung

Wenn die Rollforwardphase das Rollforward der Protokolltransaktionen abschließt, enthält die Datenbank normalerweise Änderungen, die von Transaktionen vorgenommen wurden, für die am Wiederherstellungspunkt kein Commit ausgeführt wurde. Dadurch werden die Daten, für die das Rollback ausgeführt wurde, in Bezug auf Transaktionen inkonsistent. Der Wiederherstellungsprozess öffnet dann das Transaktionsprotokoll, um Transaktionen zu identifizieren, für die kein Commit ausgeführt wurde. Transaktionen, für die kein Commit ausgeführt wurde, werden rückgängig gemacht, indem ein Rollback ausgeführt wird, es sei denn, sie weisen Sperren auf, die verhindern, dass andere Transaktionen die transaktionell inkonsistenten Daten sehen können. Dieser Schritt wird als Rollbackphase bezeichnet. Wenn die Daten zu Beginn des Wiederherstellungsprozesses in Bezug auf Transaktionen bereits konsistent sind, wird die Rollbackphase ausgelassen. Sobald die Datenbank transaktionell konsistent ist, wird sie vom Wiederherstellungsprozess online geschaltet.

ms191455.note(de-de,SQL.90).gifHinweis:
Allgemein gesprochen ist die Wiederherstellung die Gruppe von Vorgängen, die eine Datenbank beim Datenbankstart konsistent macht. Wenn die Datenbank normal heruntergefahren wurde, werden die Rollforward- und die Rollbackphase während der Wiederherstellung ausgelassen. Dies wird als Neustart der Wiederherstellung bezeichnet.

Wenn eine oder mehrere Sicherungen wiederhergestellt worden sind, umfasst die Wiederherstellung normalerweise sowohl die Rollforward- als auch die Rollbackphase. Jede vollständige und differenzielle Sicherung enthält genügend Transaktionsprotokoll-Datensätze, um die Daten der entsprechenden Sicherung in einem in sich konsistenten Status wiederherstellen zu können.

ms191455.note(de-de,SQL.90).gifHinweis:
Während der Wiederherstellung nach einem Systemabsturz oder nach einem Datenbankspiegelungs-Failover haben Benutzer in SQL Server 2005 Enterprise Edition während der Rollbackphase Zugriff auf die Datenbank. Dies wird als schnelle Wiederherstellung bezeichnet. Dies ist möglich, weil die Transaktionen, für die zum Zeitpunkt des Systemabsturzes noch kein Commit ausgeführt wurde, alle Sperren erneut abrufen, die sie vor dem Systemabsturz aufrechterhalten haben. Während für diese Transaktionen Rollbacks ausgeführt werden, schützen ihre Sperren sie vor Störungen durch Benutzer.

Beziehung zwischen den Optionen RECOVERY und NORECOVERY und den Wiederherstellungsphasen

Eine spezifische RESTORE-Anweisung endet entweder nach der Rollforwardphase oder wird während der Rollbackphase fortgesetzt, abhängig davon, ob die Anweisung WITH NORECOVERY enthält:

  • WITH RECOVERY schließt die Rollforward- und Rollbackphasen ein und stellt die Datenbank wieder her. Zusätzliche Sicherungen können nicht wiederhergestellt werden. Dies ist die Standardeinstellung.
    Falls für die Rollforwardgruppe das Rollforward nicht weit genug ausgeführt wurde, damit die Daten mit der Datenbank konsistent sind, kann die Rollbackphase nicht ausgeführt werden. Datenbankmodul zeigt eine Fehlermeldung an, und die Wiederherstellung wird beendet.
    Falls die gesamte Rollforwardgruppe mit der Datenbank konsistent ist, wird die Wiederherstellung ausgeführt, und die Datenbank kann online geschaltet werden.
  • Mit WITH NORECOVERY wird die Rollbackphase ausgelassen, damit Transaktionen, für die kein Commit ausgeführt wurde, erhalten bleiben. Das Auslassen der Rollbackphase ermöglicht, weitere Sicherungen wiederherzustellen, um das Rollforward der Datenbank bis zu einem späteren Zeitpunkt fortzusetzen. Gelegentlich wird mit RESTORE WITH NORECOVERY ein Rollforward für Daten bis zu einem Punkt ausgeführt, an dem sie mit der Datenbank konsistent sind. In diesen Fällen gibt das Datenbankmodul eine Informationsmeldung aus, dass die Rollforwardgruppe nun mithilfe der Option RECOVERY wiederhergestellt werden kann.
    Informationen zu Rollforwardgruppen finden Sie unter Grundlegendes zur Funktionsweise der Wiederherstellung von Sicherungen in SQL Server.
ms191455.note(de-de,SQL.90).gifHinweis:
Eine dritte Alternative, WITH STANDBY, geht über den Rahmen dieses Themas hinaus.

Eine ausführliche Beschreibung dieser Optionen von RESTORE finden Sie unter RESTORE (Transact-SQL).

Wiederherstellungspfade

Ein Wiederherstellungspfad ist ein eindeutiger Satz von Transformationen, die die Datenbank im Verlauf der Zeit weiterentwickelt haben, ohne ihre Konsistenz zu beeinträchtigen. Informationen zu Wiederherstellungspfaden und dem damit verbundenen Konzept der Wiederherstellungsverzweigungen finden Sie unter Wiederherstellungspfade.

Wiederherstellen einer Datenbank, wenn SQL Server offline ist

Sie können eine Datenbank mithilfe von SQL Writer wiederherstellen, während SQL Server offline ist, unter der Bedingung, dass kein Volltextkatalog vorhanden ist. Ist der Datenbank ein Volltextkatalog zugeordnet, müssen Sie zuerst SQL Server starten oder den Dienst Microsoft-Volltextsuchmodul für SQL (MSFTESQL, Microsoft Full-Text Engine for SQL) beenden.

Wenn SQL Server ausgeführt wird, wird das Schließen der Volltextkatalogdateien zur Vorbereitung des Wiederherstellungsvorgangs erzwungen. Wenn SQL Server jedoch offline ist, bleiben möglicherweise bestimmte Volltextdateien in MSFTESQL geöffnet, was zur Folge hat, dass sie nicht von der Wiederherstellungsanwendung überschrieben werden können. Um das Schließen der Volltextdateien zu erzwingen, kann die Anwendung MSFTESQL schließen.

Um dies zu vermeiden, führen Sie eine der folgenden Aktionen aus:

Siehe auch

Konzepte

Übersicht über Wiederherstellungsvorgänge in SQL Server
Verwenden von Transaktionsprotokollsicherungen

Andere Ressourcen

Erstellen einer vollständigen und einer differenziellen Sicherung einer SQL Server-Datenbank
Implementieren von Wiederherstellungsszenarien für SQL Server-Datenbanken
Verwenden von Wiederherstellungssequenzen für SQL Server-Datenbanken

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

17. Juli 2006

Geänderter Inhalt:
  • In folgenden Abschnitten wurden kleinere Änderungen vorgenommen:
    • "Wiederherstellungssequenzen"
    • "Rollforwardkonsistenz", früher "Datenbankkonsistenz"
    • "Rollbackphase und Wiederherstellung", früher "Sicherungswiederherstellung"
  • Das frühere Thema "Beziehung von RESTORE-Optionen zu Wiederherstellungsphasen" wurde in dieses Thema eingefügt und aktualisiert; die Beschreibung der Option WITH RECOVERY wurde überarbeitet.