Wiederherstellen von Dateien (vollständiges Wiederherstellungsmodell)

Dieses Thema ist nur für Datenbanken relevant, die mehrere Dateien oder Dateigruppen enthalten, die das vollständige oder massenprotokollierte Wiederherstellungsmodell verwenden.

Das Ziel einer Dateiwiederherstellung besteht darin, eine oder mehrere beschädigte Dateien wiederherzustellen, ohne dabei die gesamte Datenbank wiederherstellen zu müssen. Alle Editionen von SQL Server unterstützen das Wiederherstellen von Dateien im Offlinemodus der Datenbank (siehe Offlinewiederherstellung von Seiten). SQL Server 2005 Standard, SQL Server 2005 Express Edition und SQL Server 2005 Workgroup sowie höhere Versionen unterstützen ausschließlich die Offlinewiederherstellung. Zum Wiederherstellen einer Datei in der primären Dateigruppe muss die Datenbank immer offline sein. SQL Server 2005 Enterprise Edition und höhere Versionen verwenden den Offlinewiederherstellungsmodus, wenn die Datenbank bereits offline ist.

In SQL Server 2005 Enterprise Edition und höheren Versionen bleibt die Datenbank online, wenn die Datenbank während einer Dateiwiederherstellung online ist. Der Prozess der Wiederherstellung einer Datei, während die Datenbank online ist, wird als Onlinedateiwiederherstellung bezeichnet.

Für die Dateiwiederherstellung sind folgende Szenarien möglich:

  • Offlinedateiwiederherstellung

    Bei einer Dateiwiederherstellung im Offlinemodus ist die Datenbank offline, während die beschädigten Dateien oder Dateigruppen wiederhergestellt werden. Am Ende der Wiederherstellungssequenz wird die Datenbank wieder online geschaltet.

  • Onlinedateiwiederherstellung

    In SQL Server 2005 Enterprise Edition und höheren Versionen werden Dateiwiederherstellungen automatisch im Onlinemodus durchgeführt, wenn die Datenbank online ist. Dateigruppen, in denen Dateien wiederhergestellt werden, befinden sich jedoch offline. Sobald die Dateien einer Offlinedateigruppe wiederhergestellt sind, wird die Dateigruppe automatisch online geschaltet. Weitere Informationen zu Onlinewiederherstellungen finden Sie unter Ausführen von Onlinewiederherstellungen.

    HinweisHinweis

    Abfragen und Updates können nur für Onlinedateigruppen ausgeführt werden. Wenn Sie versuchen, auf eine Dateigruppe zuzugreifen, die offline ist (dazu gehören auch Dateigruppen mit einer Datei, die gerade wiederhergestellt wird), wird ein Fehler generiert.

Wenn die wiederherzustellende Dateigruppe Lese-/Schreibzugriff aufweist, muss nach der Wiederherstellung der letzten Daten bzw. der letzten differenziellen Sicherung eine fortlaufende Kette von Protokollsicherungen angewendet werden. Auf diese Weise wird die Dateigruppe auf den Stand der Protokolldatensätze in der aktuellen Protokolldatei gebracht. Der Wiederherstellungspunkt befindet sich normalerweise – aber nicht zwingend – gegen Ende der Protokolldatei.

Ist die wiederherzustellende Dateigruppe schreibgeschützt, müssen normalerweise keine Protokollsicherungen angewendet werden; dieser Schritt wird daher ausgelassen. Wenn die Sicherung durchgeführt wurde, nachdem die Datei schreibgeschützt worden war, ist dies die letzte Sicherung, die wiederhergestellt werden muss. Die Ausführung des Rollforwards endet am Zielpunkt.

Wiederherstellen von Dateien oder Dateigruppen

So stellen Sie beschädigte Dateien von Dateisicherungen und differenziellen Dateisicherungen wieder her

  1. Erstellen Sie eine Sicherung des Protokollfragments des aktiven Transaktionsprotokolls.

    Falls dies nicht möglich ist, weil das Protokoll beschädigt wurde, müssen Sie die gesamte Datenbank wiederherstellen. Informationen zum Sichern eines Transaktionsprotokolls finden Sie unter Erstellen von Transaktionsprotokollsicherungen.

    Wichtiger HinweisWichtig

    Bei einer Offlinedateiwiederherstellung müssen Sie immer im Voraus eine Sicherung des Protokollfragments erstellen. Bei einer Onlinedateiwiederherstellung müssen Sie die Sicherung des Protokollfragments immer danach erstellen. Die Protokollsicherung ist erforderlich, um für die wiederherzustellenden Dateien einen mit der restlichen Datenbank konsistenten Status zu gewährleisten.

  2. Stellen Sie jede beschädigte Datei von der letzten Dateisicherung dieser Datei wieder her.

  3. Stellen Sie für jede wiederhergestellte Datei die letzte differenzielle Dateisicherung wieder her (falls vorhanden).

  4. Stellen Sie Transaktionsprotokollsicherungen in der chronologischen Reihenfolge wieder her, beginnend mit der Sicherung für die älteste der wiederhergestellten Dateien bis hin zu der in Schritt 1 erstellen Sicherung des Protokollfragments.

    Um eine Datenbank in einen konsistenten Status zu versetzen, müssen Sie die Transaktionsprotokollsicherungen wiederherstellen, die nach den Dateisicherungen erstellt wurden. Für die Transaktionsprotokollsicherungen kann schnell ein Rollforward ausgeführt werden, weil nur die Änderungen, die die wiederhergestellten Dateien betreffen, angewendet werden. Die Wiederherstellung einzelner Dateien ist der Wiederherstellung der gesamten Datenbank vorzuziehen, da nicht beschädigte Dateien dann nicht kopiert werden müssen und für diese Dateien auch kein Rollforward ausgeführt werden muss. Es muss jedoch trotzdem die gesamte Kette der Protokollsicherungen gelesen werden.

  5. Stellen Sie die Datenbank wieder her.

HinweisHinweis

Mit Dateisicherungen kann der Status der Datenbank zu einem früheren Zeitpunkt wiederhergestellt werden. Dazu müssen Sie einen vollständigen Dateisicherungssatz wiederherstellen und anschließend die Transaktionsprotokollsicherungen in der chronologischen Reihenfolge wiederherstellen, um einen Zielpunkt zu erreichen, der nach dem Ende der letzten wiederhergestellten Dateisicherung liegt. Weitere Informationen zur Wiederherstellung bis zu einem bestimmten Zeitpunkt finden Sie unter Wiederherstellen einer Datenbank bis zu einem Punkt in einer Sicherung.

So stellen Sie Dateien und Dateigruppen wieder her

Erweiterte Themen

Transact-SQL-Wiederherstellungssequenz für die Offlinedateiwiederherstellung (vollständiges Wiederherstellungsmodell)

Ein Dateiwiederherstellungsszenario besteht aus einer einzigen Wiederherstellungssequenz, bei der die entsprechenden Daten kopiert werden, ein Rollforward ausgeführt wird und die Daten wiederhergestellt werden.

Der folgende Transact-SQL-Code zeigt die entscheidenden RESTORE-Optionen in einer Wiederherstellungssequenz für das Dateiwiederherstellungsszenario. Hierfür unwichtige Syntax und Informationen werden ausgelassen.

In diesem Beispiel wird die Offlinewiederherstellung von zwei sekundären Dateien – A und B – mit der Option NORECOVERY gezeigt. Anschließend werden zwei Protokollsicherungen mit NORECOVERY angewendet, gefolgt von der Sicherung des Protokollfragments, die mit RECOVERY wiederhergestellt wird. Das Beispiel beginnt mit der Offlineschaltung der Dateien für die Offlinedateiwiederherstellung.

--Take the file offline.
ALTER DATABASE database_name MODIFY FILE SET OFFLINE
-- Back up the currently active transaction log.
BACKUP LOG database_name
   TO <tail_log_backup>
   WITH NORECOVERY
GO 
-- Restore the files.
RESTORE DATABASE database_name FILE=<name> 
   FROM <file_backup_of_file_A> 
   WITH NORECOVERY
RESTORE DATABASE database_name FILE=<name> ......
   FROM <file_backup_of_file_B> 
   WITH NORECOVERY
-- Restore the log backups.
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <tail_log_backup> 
   WITH RECOVERY