Freigeben über


Wiederherstellung verwandter Datenbanken, die eine markierte Transaktion enthalten

Dieses Thema ist nur für Datenbanken relevant, die markierte Transaktionen enthalten, und die vollständigen oder massendatenprotokollierten Wiederherstellungsmodelle verwenden.

Informationen zu den Anforderungen für die Wiederherstellung 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 auf diese bestimmte Markierung zu ermöglichen. Protokollmarkierungen sind transaktionsspezifisch und werden nur eingefügt, wenn ihre zugeordneten Transaktions-Commits ausgeführt werden. Daher können Markierungen an bestimmte Arbeiten gebunden werden, und Sie können zu einem Punkt wiederherstellen, der diese Arbeit einschließt oder ausschließt.

Bevor Sie benannte Markierungen in das Transaktionsprotokoll einfügen, beachten Sie Folgendes:

Transact-SQL Syntax zum Hinzufügen von benannten Markierungen in ein Transaktionsprotokoll

Um Markierungen in die Transaktionsprotokolle einzufügen, verwenden Sie die BEGIN TRANSACTION-Anweisung und die WITH MARK [description]-Klausel. Die Marke wird mit der Transaktion identisch bezeichnet. Die optionale Beschreibung ist eine textbezogene Beschreibung der Markierung, nicht der Markenname. Beispielsweise lautet Tx1der Name der Transaktion und der in der folgenden BEGIN TRANSACTION Anweisung erstellten Markierung:

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

Das Transaktionsprotokoll zeichnet den Namen der Marke (Transaktionsname), Beschreibung, Datenbank, Benutzer, datetime Informationen und die Protokollsequenznummer (LSN) auf. Die datetime Informationen werden mit dem Markennamen verwendet, um die Markierung eindeutig zu identifizieren.

Informationen zum Einfügen einer Markierung in eine Transaktion, die sich über mehrere Datenbanken erstreckt, finden Sie unter Verwenden von markierten Transaktionen zum konsistenten Wiederherstellen verwandter Datenbanken (vollständiges Wiederherstellungsmodell).

Transact-SQL Syntax zur Wiederherstellung zu einer Markierung

Wenn Sie eine markierte Transaktion mithilfe einerRESTORE LOG-Anweisungals Ziel festlegen, können Sie eine der folgenden Klauseln verwenden, um an oder unmittelbar vor der Markierung zu beenden:

  • Verwenden Sie die WITH STOPATMARK = '<mark_name>' -Klausel, um anzugeben, dass die markierte Transaktion der Wiederherstellungspunkt ist.

    STOPATMARK rollt vorwärts zur Marke und enthält die markierte Transaktion in den Roll forward.

  • Verwenden Sie die WITH STOPBEFOREMARK = '<mark_name>' -Klausel, um anzugeben, dass der Protokolldatensatz, der sich unmittelbar vor der Markierung befindet, der Wiederherstellungspunkt ist.

    STOPBEFOREMARK rollt vorwärts zur Marke und schließt die Transaktion aus dem Roll forward aus.

Die OPTIONEN STOPATMARK und STOPBEFOREMARK unterstützen beide eine optionale AFTER datetime-Klausel . Wenn "datetime" verwendet wird, müssen die Namen von Marken nicht eindeutig sein.

Wenn AFTER datetime nicht angegeben wird, stoppt der Roll Forward beim ersten Markierungspunkt mit dem angegebenen Namen. Wenn AFTER datetime angegeben ist, stoppt roll forward bei der ersten Marke, die den angegebenen Namen hat, genau bei oder nach datetime.

Hinweis

Wie bei allen Point-in-Time-Wiederherstellungsvorgängen ist die Wiederherstellung auf eine Markierung nicht zulässig, wenn die Datenbank Vorgänge ausführt, die massenprotokolliert werden.

So stellen Sie eine markierte Transaktion wieder her

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

RESTORE (Transact-SQL)

Vorbereiten der Protokollsicherungen

In diesem Beispiel wäre eine geeignete Sicherungsstrategie für diese verwandten Datenbanken die folgenden:

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

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

    Die Datenbanken können sequenziell 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 Verwenden von markierten Transaktionen zum konsistenten Wiederherstellen verwandter Datenbanken (Vollständiges Wiederherstellungsmodell).

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

Wiederherstellung der Datenbank auf eine markierte Transaktion

So stellen Sie die Sicherung wieder her

  1. Erstellen Sie nach Möglichkeit Tail-Log-Sicherungen der nicht beschädigten Datenbanken.

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

  3. Identifizieren Sie die zuletzt markierte Transaktion, die in allen Transaktionsprotokollsicherungen verfügbar ist. Diese Informationen werden in der Logmarkhistory-Tabelle in der msdb-Datenbank auf jedem Server gespeichert.

  4. Identifizieren Sie die Protokollsicherungen für alle zugehörigen Datenbanken, die diese Markierung enthalten.

  5. Stellen Sie jede Protokollsicherung wieder her, und beenden Sie sie bei der markierten Transaktion.

  6. Stellen Sie jede Datenbank wieder her.

Siehe auch

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