Freigeben über


Wiederherstellen verwandter Datenbanken mit einer markierten Transaktion

Gilt für: SQL Server

Dieses Thema ist nur für Datenbanken relevant, die markierte Transaktionen enthalten und von denen das vollständige oder massenprotokollierte Wiederherstellungsmodell verwendet wird.

Weitere Informationen zu den Anforderungen für die Wiederherstellung bis zu einem bestimmten Wiederherstellungspunkt finden Sie unter Wiederherstellen einer SQL Server-Datenbank zu einem Zeitpunkt (vollständiges Wiederherstellungsmodell).

SQL Server unterstützt das Einfügen benannter Markierungen in das Transaktionsprotokoll, um die Wiederherstellung bis zu einer bestimmten Markierung zu ermöglichen. Protokollmarkierungen sind transaktionsspezifisch und werden nur eingefügt, wenn für die zugehörige Transaktion ein Commit ausgeführt wird. Demzufolge können Sie Markierungen mit bestimmten Daten verknüpfen und die Wiederherstellung bis zu einem bestimmten Punkt vornehmen, der diese Daten ein- oder ausschließt.

Beachten Sie Folgendes, bevor Sie benannte Markierungen in das Transaktionsprotokoll einfügen:

  • Transaktionsmarkierungen belegen Protokollspeicherplatz und sollten deshalb nur für Transaktionen verwendet werden, die eine wichtige Rolle bei der Wiederherstellungsstrategie für die Datenbank spielen.

  • Nachdem für eine markierte Transaktion ein Commit ausgeführt wurde, wird in die logmarkhistory -Tabelle in msdbeine Zeile eingefügt.

  • Wenn sich eine markierte Transaktion über mehrere Datenbanken auf demselben Datenbankserver oder auf verschiedenen Servern erstreckt, müssen die Markierungen in den Protokollen aller betroffenen Datenbanken aufgezeichnet werden. Weitere Informationen finden Sie unter Wiederherstellen von verwandten Datenbanken mithilfe von markierten Transaktionen (vollständiges Wiederherstellungsmodell).

Transact-SQL-Syntax für das Einfügen benannter Markierungen in ein Transaktionsprotokoll

Verwenden Sie die BEGIN TRANSACTION -Anweisung und die WITH MARK [description]-Klausel, um Markierungen in die Transaktionsprotokolle einzufügen. Die Markierung erhält denselben Namen wie die Transaktion. Der optionale description -Parameter stellt eine Textbeschreibung der Markierung dar und nicht den Namen der Markierung. Beispielsweise lautet der Name der Transaktion und der Markierung, die in der folgenden BEGIN TRANSACTION -Anweisung erstellt werden, jeweils Tx1:

BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'    

Mit dem Transaktionsprotokoll werden der Markierungsname (Transaktionsname), die Beschreibung, die Datenbank, der Benutzer, datetime -Informationen und die Protokollfolgenummer (LSN, Log Sequence Number) aufgezeichnet. Die datetime -Informationen werden zusammen mit dem Markierungsnamen für die eindeutige Identifizierung der Markierung verwendet.

Informationen zum Einfügen einer Markierung in eine Transaktion, die mehrere Datenbanken umfasst, finden Sie unter Wiederherstellen von verwandten Datenbanken mithilfe von markierten Transaktionen (vollständiges Wiederherstellungsmodell).

Transact-SQL-Syntax für das Wiederherstellen bis zu einer Markierung

Wenn Sie das Ziel einer markierten Transaktion mithilfe einer RESTORE LOG-Anweisung festlegen, können Sie mit einer der folgenden Klauseln ein Anhalten bei oder unmittelbar vor der Markierung bewirken:

  • Geben Sie mithilfe der Klausel WITH STOPATMARK = '<mark_name>' an, dass die markierte Transaktion den Wiederherstellungspunkt darstellt.

    STOPATMARK führt ein Rollforward bis zur Markierung aus und schließt die markierte Transaktion in das Rollforward ein.

  • Geben Sie mithilfe der Klausel WITH STOPBEFOREMARK = '<mark_name>' an, dass der Protokolldatensatz unmittelbar vor der Markierung den Wiederherstellungspunkt darstellt.

    STOPBEFOREMARK führt ein Rollforward bis zur Markierung aus und schließt die markierte Transaktion aus dem Rollforward aus.

Die Optionen STOPATMARK und STOPBEFOREMARK unterstützen beide eine optionale AFTER datetime -Klausel. Wenn datetime verwendet wird, müssen die Markierungsnamen nicht eindeutig sein.

Wenn AFTER datetime nicht angegeben ist, wird der Rollforward bei der ersten Markierung mit dem angegebenen Namen beendet. Wenn AFTER datetime angegeben ist, wird der Rollforward bei der ersten Markierung beendet, die den angegebenen Namen genau um oder nach datetimeaufweist.

Hinweis

Wie bei jedem Wiederherstellungsvorgang bis zu einem bestimmten Zeitpunkt ist das Wiederherstellen bis zu einer Markierung nicht zulässig in Zeiten, in denen für die Datenbank massenprotokollierte Vorgänge ausgeführt werden.

So führen Sie eine Wiederherstellung bis zu einer markierten Transaktion aus

Wiederherstellen einer Datenbank bis zu einer markierten Transaktion (SQL Server Management Studio)

RESTORE (Transact-SQL)

Vorbereiten der Protokollsicherungen

Die folgende Sicherungsstrategie für diese verbundenen Datenbanken wäre in diesem Beispiel angemessen:

  1. Verwenden Sie für beide Datenbanken das vollständige Wiederherstellungsmodell.

  2. Erstellen Sie eine vollständige Sicherung jeder einzelnen Datenbank.

    Die Datenbanken können nacheinander oder gleichzeitig gesichert werden.

  3. Markieren Sie vor dem Sichern des Transaktionsprotokolls eine Transaktion, die in allen Datenbanken ausgeführt wird. Informationen zum Erstellen der markierten Transaktionen finden Sie unter Wiederherstellen von verwandten Datenbanken mithilfe von markierten Transaktionen (vollständiges Wiederherstellungsmodell).

  4. Sichern Sie das Transaktionsprotokoll für jede Datenbank.

Wiederherstellen der Datenbank bis zu einer markierten Transaktion

So stellen Sie die Sicherung wieder her

  1. Erstellen Sie nach Möglichkeit Sicherungen des Protokollfragments der unbeschädigten Datenbanken.

  2. Stellen Sie die letzte vollständige Datenbanksicherung jeder Datenbank wieder her.

  3. Identifizieren Sie die letzte verfügbare markierte Transaktion in allen Transaktionsprotokollsicherungen. Diese Informationen werden in der logmarkhistory -Tabelle in der msdb -Datenbank auf dem entsprechenden Server gespeichert.

  4. Identifizieren Sie die Protokollsicherungen für alle verbundenen Datenbanken, die diese Markierung enthalten.

  5. Stellen Sie jede Protokollsicherung bis zur markierten Transaktion wieder her.

  6. Stellen Sie jede Datenbank wieder her.

Weitere Informationen

BEGIN TRANSACTION (Transact-SQL)
RESTORE (Transact-SQL)
Anwenden von Transaktionsprotokollsicherungen (SQL Server)
Wiederherstellen von verwandten Datenbanken mithilfe von markierten Transaktionen (vollständiges Wiederherstellungsmodell)
Übersicht über Wiederherstellungsvorgänge (SQL Server)
Wiederherstellen einer SQL Server-Datenbank zu einem Zeitpunkt (vollständiges Wiederherstellungsmodell)
Planen und Ausführen von Wiederherstellungssequenzen (vollständiges Wiederherstellungsmodell)