Freigeben über


Sicherungen des Protokollfragments

Dieses Thema ist nur für Datenbanken relevant, für die das vollständige oder massenprotokollierte Wiederherstellungsmodell verwendet wird.

In den meisten Fällen ist es bei Verwendung des vollständigen oder des massenprotokollierten Wiederherstellungsmodells in SQL Server 2005 und späteren Versionen erforderlich, das Protokollfragment zu sichern, um die Protokolldatensätze aufzuzeichnen, die noch nicht gesichert wurden. Eine Protokollsicherung des Fragments im Protokoll, die unmittelbar vor einem Wiederherstellungsvorgang erstellt wurde, wird als Sicherung des Protokollfragments bezeichnet.

In SQL Server 2005 und späteren Versionen ist es normalerweise erforderlich, eine Sicherung des Protokollfragments auszuführen, bevor die Wiederherstellung einer Datenbank gestartet wird. Durch die Sicherung des Protokollfragments wird Datenverlust verhindert und die Protokollkette intakt gehalten. Wenn Sie eine Datenbank bis zum Zeitpunkt des Fehlers wiederherstellen, ist die Sicherung des Protokollfragments im Wiederherstellungsplan die letzte relevante Sicherung. Wenn Sie das Protokollfragment nicht sichern können, kann eine Datenbank nur bis zum Ende der letzten Sicherung wiederhergestellt werden, die vor dem Fehler erstellt wurde.

Nicht für alle Wiederherstellungsszenarien ist eine Sicherung des Protokollfragments erforderlich. Es ist keine Sicherung des Protokollfragments erforderlich, wenn der Wiederherstellungspunkt in einer früheren Protokollsicherung enthalten ist oder wenn Sie die Datenbank verschieben oder ersetzen (überschreiben) und sie nicht für einen Zeitpunkt nach der letzten Sicherung wiederherstellen müssen. Wenn die Protokolldateien beschädigt sind und keine Sicherung des Protokollfragments erstellt werden kann, müssen Sie zudem die Datenbank ohne Verwendung einer Sicherung des Protokollfragments wiederherstellen. Dabei gehen alle Transaktionen verloren, die nach der letzten Protokollsicherung ausgeführt wurden. Weitere Informationen finden Sie im Folgenden unter "Wiederherstellen ohne Verwendung einer Sicherung des Protokollfragments".

Sichern des Protokollfragments

Wie jede Protokollsicherung wird auch eine Sicherung des Protokollfragments mit der BACKUP LOG-Anweisung ausgeführt. Für folgende Situationen wird empfohlen, eine Sicherung des Protokollfragments auszuführen:

  • Wenn die Datenbank online ist und Sie einen Wiederherstellungsvorgang für die Datenbank ausführen möchten, sollten Sie vor dem Starten des Wiederherstellungsvorgangs das Protokollfragment mithilfe von WITH NORECOVERY sichern:

    BACKUP LOG database_name TO <backup_device> WITH NORECOVERY

    HinweisHinweis

    Damit ein Fehler vermieden wird, ist die Option NORECOVERY erforderlich.

  • Wenn die Datenbank offline ist und nicht gestartet wird.

    Versuchen Sie, eine Sicherung des Protokollfragments zu erstellen. Da während dieser Zeit keine Transaktionen auftreten können, kann WITH NORECOVERY optional verwendet werden. Wenn die Datenbank beschädigt ist, verwenden Sie WITH CONTINUE_AFTER_ERROR wie folgt:

    BACKUP LOG database_name TO <backup_device> WITH CONTINUE_AFTER_ERROR

    Wenn die Datenbank beschädigt ist, sie beispielsweise nicht gestartet wird, verläuft die Sicherung des Protokollfragments nur dann erfolgreich, wenn die Protokolldateien unbeschädigt sind, die Datenbank sich in einem Zustand befindet, in dem Protokollfragmentsicherungen unterstützt werden, und wenn die Datenbank keine massenprotokollierten Änderungen enthält.

In der folgenden Tabelle sind diese Optionen zusammengefasst.

Option BACKUP LOG

Kommentare

NORECOVERY

Verwenden Sie NORECOVERY immer dann, wenn Sie vorhaben, einen Wiederherstellungsvorgang in der Datenbank fortzusetzen. Mit NORECOVERY wird die Datenbank in den Wiederherstellungszustand versetzt. Damit wird sichergestellt, dass sich die Datenbank nach der Sicherung des Protokollfragments nicht ändert.

Das Protokoll wird abgeschnitten, es sei denn, die NO_TRUNCATE-Option oder COPY_ONLY-Option ist ebenfalls angegeben.

Wichtiger HinweisWichtig
Es wird empfohlen, die Verwendung von NO_TRUNCATE zu vermeiden, es sei denn, die Datenbank ist beschädigt.

CONTINUE_AFTER_ERROR

Verwenden Sie CONTINUE_AFTER_ERROR nur dann, wenn Sie das Fragment einer beschädigten Datenbank sichern.

HinweisHinweis
Wenn Sie das Protokollfragment in einer beschädigten Datenbank sichern, sind einige der Metadaten, die normalerweise in Protokollsicherungen erfasst werden, eventuell nicht verfügbar. Weitere Informationen finden Sie nachstehend unter "Sicherungen des Protokollfragments mit unvollständigen Sicherungsmetadaten".

So erstellen Sie eine Transaktionsprotokollsicherung bei beschädigter Datenbank

Sicherungen des Protokollfragments mit unvollständigen Sicherungsmetadaten

Eine Protokollfragmentsicherung erfasst das Protokollfragment selbst dann, wenn die Datenbank offline geschaltet oder beschädigt ist oder wenn Datendateien fehlen. Dies kann zu unvollständigen Metadaten aus den Wiederherstellungsinformationsbefehlen und aus msdb führen. In diesem Fall sind jedoch nur die Metadaten unvollständig; das erfasste Protokoll ist vollständig und kann verwendet werden.

Enthält eine Sicherung des Protokollfragments unvollständige Metadaten, wird der Eintrag has_incomplete_metadata in der backupset-Tabelle auf 1 festgelegt. Auch in der Ausgabe von RESTORE HEADERONLY ist HasIncompleteMetadata auf 1 festgelegt.

Wenn die Metadaten in einer Sicherung des Protokollfragments unvollständig sind, fehlt in der backupfilegroup-Tabelle ein Großteil der Informationen zu den Dateigruppen zum Zeitpunkt der Sicherung des Protokollfragments. Die meisten Spalten der backupfilegroup-Tabelle sind dann NULL, und nur die folgenden Spalten sind dann sinnvoll:

  • backup_set_id

  • filegroup_id

  • type

  • type_desc

  • is_readonly

Wiederherstellen ohne Verwendung einer Sicherung des Protokollfragments

In den folgenden Wiederherstellungsszenarien ist keine Sicherung des Protokollfragments erforderlich:

Änderungsverlauf

Aktualisierter Inhalt

Der Abschnitt "Sichern des Protokollfragments" wurde aktualisiert, um Informationen zum Durchführen einer Protokollfragmentsicherung, wenn die Datenbank offline ist und nicht gestartet wird, zu korrigieren.