Anwenden von Transaktionsprotokollsicherungen (SQL Server)Apply Transaction Log Backups (SQL Server)

Dieses Thema ist nur für das vollständige und für das massenprotokollierte Wiederherstellungsmodell relevant.The topic is relevant only for the full recovery model or bulk-logged recovery model.

In diesem Thema wird das Anwenden von Transaktionsprotokollsicherungen als Bestandteil der Wiederherstellung einer SQL ServerSQL Server -Datenbank erläutert.This topic describes applying transaction log backups as part of restoring a SQL ServerSQL Server database.

Anforderungen zum Wiederherstellen von Transaktionsprotokollsicherungen Requirements for restoring transaction log backups

Für das Anwenden einer Transaktionsprotokollsicherung müssen folgende Voraussetzungen erfüllt sein:To apply a transaction log backup, the following requirements must be met:

  • Ausreichende Protokollsicherungen für eine Wiederherstellungssequenz: Es müssen ausreichend Protokolldatensätze gesichert sein, damit eine Wiederherstellungssequenz abgeschlossen werden kann.Enough Log Backups for a Restore Sequence : You must have enough log records backed up to complete a restore sequence. Die erforderlichen Protokollsicherungen (einschließlich der Sicherung des Protokollfragments , sofern erforderlich) müssen vor dem Start einer Wiederherstellungssequenz zur Verfügung stehen.The necessary log backups, including the tail-log backup where required, must be available before the start of the restore sequence.

  • Richtige Wiederherstellungsreihenfolge: Als Erstes muss die unmittelbar vorherige vollständige oder differenzielle Datenbanksicherung wiederhergestellt werden.Correct restore order: The immediately previous full database backup or differential database backup must be restored first. Alle nach dieser vollständigen oder differenziellen Datenbanksicherung erstellten Transaktionsprotokolle müssen dann in chronologischer Reihenfolge wiederhergestellt werden.Then, all transaction logs that are created after that full or differential database backup must be restored in chronological order. Wenn eine Transaktionsprotokollsicherung in dieser Protokollkette verloren gegangen oder beschädigt ist, können Sie nur Transaktionsprotokolle vor dem fehlenden wiederherstellen.If a transaction log backup in this log chain is lost or damaged, you can restore only transaction logs before the missing transaction log.

  • Noch nicht wiederhergestellte Datenbank: Die Datenbank kann erst wiederhergestellt werden, nachdem das letzte Transaktionsprotokoll angewendet wurde.Database not yet recovered: The database cannot be recovered until after the final transaction log has been applied. Wenn Sie die Datenbank nach dem Wiederherstellen einer der Zwischen-Transaktionsprotokollsicherungen (einer Sicherung vor dem Ende der Protokollkette) wiederherstellen, können Sie die Datenbank nicht zu einem späteren Zeitpunkt als diesem wiederherstellen, ohne die gesamte Wiederherstellungssequenz, beginnend mit der vollständigen Datenbanksicherung, neu zu starten.If you recover the database after restoring one of the intermediate transaction log backups, that before the end of the log chain, you cannot restore the database past that point without restarting the complete restore sequence, starting with the full database backup.

    TIPP:TIP! Eine bewährte Methode besteht darin, alle Protokollsicherungen (RESTORE LOG Datenbankname WITH NORECOVERY) wiederherzustellen.A best practice is to restore all the log backups (RESTORE LOG database_name WITH NORECOVERY). Stellen Sie nach dem Wiederherstellen der letzten Protokollsicherung die Datenbank in einem separaten Vorgang (RESTORE DATABASE Datenbankname WITH RECOVERY) wieder her.Then, after restoring the last log backup, recover the database in a separate operation (RESTORE DATABASE database_name WITH RECOVERY).

Wiederherstellungs- und Transaktionsprotokolle Recovery and transaction logs

Wenn Sie den Wiederherstellungsvorgang abschließen und die Datenbank wiederherstellen, wird während der Wiederherstellung für alle unvollständigen Transaktionen ein Rollback ausgeführt.When you finish the restore operation and recover the database, recovery rolls back all incomplete transactions. Dies wird als Rollbackphasebezeichnet.This is known as the undo phase. Das Rollback ist erforderlich, um die Integrität der Datenbank wiederherzustellen.Rolling back is required to restore the integrity of the database. Nach dem Rollback wird die Datenbank online geschaltet, und es können keine weiteren Transaktionsprotokollsicherungen auf die Datenbank angewendet werden.After rollback, the database goes online, and no more transaction log backups can be applied to the database.

So kann z. B. eine Reihe von Transaktionsprotokollsicherungen eine lang andauernde Transaktion enthalten.For example, a series of transaction log backups contain a long-running transaction. Der Start der Transaktion wird in der ersten Transaktionsprotokollsicherung, das Ende der Transaktion jedoch in der zweiten Transaktionsprotokollsicherung aufgezeichnet.The start of the transaction is recorded in the first transaction log backup, but the end of the transaction is recorded in the second transaction log backup. Es gibt keinen Datensatz für einen Commit- oder Rollbackvorgang in der ersten Transaktionsprotokollsicherung.There is no record of a commit or rollback operation in the first transaction log backup. Wenn ein Wiederherstellungsvorgang nach dem Anwenden der ersten Transaktionsprotokollsicherung ausgeführt wird, wird die lang andauernde Transaktion als unvollständig behandelt, und für die in der ersten Transaktionsprotokollsicherung aufgezeichneten Datenänderungen dieser Transaktion wird ein Rollback ausgeführt.If a recovery operation runs when the first transaction log backup is applied, the long-running transaction is treated as incomplete, and data modifications recorded in the first transaction log backup for the transaction are rolled back. SQL ServerSQL Server ist das Anwenden einer zweiten Transaktionsprotokollsicherung nach diesem Zeitpunkt nicht zulässig. does not allow for the second transaction log backup to be applied after this point.

HINWEIS: Unter bestimmten Umständen können Sie eine Datei während der Protokollwiederherstellung explizit hinzufügen.NOTE: In some circumstances, you can explicitly add a file during log restore.

Verwenden von Protokollsicherungen zum Wiederherstellen des Zustands vor dem Fehler Use log backups to restore to the failure point

Nehmen Sie die folgende Ereignissequenz an.Assume the following sequence of events.

UhrzeitTime EreignisEvent
8:00 Uhr8:00 A.M. Sichern der Datenbank zum Erstellen einer vollständigen Datenbanksicherung.Back up database to create a full database backup.
12:00 UhrNoon Sichern des Transaktionsprotokolls.Back up transaction log.
16:00 Uhr4:00 P.M. Sichern des Transaktionsprotokolls.Back up transaction log.
18:00 Uhr6:00 P.M. Sichern der Datenbank zum Erstellen einer vollständigen Datenbanksicherung.Back up database to create a full database backup.
20:00 Uhr8:00 P.M. Sichern des Transaktionsprotokolls.Back up transaction log.
21:45 Uhr9:45 P.M. Fehler tritt auf.Failure occurs.

HINWEIS: Eine Erklärung dieser Beispielsequenz von Sicherungen finden Sie unter Transaktionsprotokollsicherungen (SQL Server).NOTE: For an explanation of this example sequence of backups, see Transaction Log Backups (SQL Server).

Zum Wiederherstellen des Datenbankzustands von 21:45 UhrTo restore the database to its state at 9:45 P.M. (Zeitpunkt des Fehlers) kann eines der folgenden Verfahren verwendet werden:(the point of failure), either of the following alternative procedures can be used:

Alternative 1: Wiederherstellen der Datenbank mithilfe der letzten vollständigen DatenbanksicherungAlternative 1: Restore the database by using the most recent full database backup

  1. Erstellen Sie eine Sicherung des Protokollfragments des aktuell aktiven Transaktionsprotokolls zum Zeitpunkt des Fehlers.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Stellen Sie nicht die vollständige Datenbanksicherung von 8:00 UhrDo not restore the 8:00 A.M. von 18:00 Uhr.full database backup. Stellen Sie stattdessen die neuere vollständige Datenbanksicherung von 18:00 Uhr wieder her,Instead, restore the more recent 6:00 P.M. und wenden Sie dann die Transaktionsprotokollsicherung von 20:00 Uhrfull database backup, and then apply the 8:00 P.M. und die Sicherung des Protokollfragments an.log backup and the tail-log backup.

    Alternative 2: Wiederherstellen der Datenbank mithilfe einer früheren vollständigen DatenbanksicherungAlternative 2: Restore the database by using an earlier full database backup

HINWEIS: Dieser alternative Vorgang ist nützlich, wenn Sie aufgrund eines Problems die vollständige Datenbanksicherung von 18:00 UhrNOTE: This alternative process is useful if a problem prevents you from using the 6:00 P.M. von 18:00 Uhr.full database backup. Dieser Vorgang dauert länger als das Wiederherstellen der vollständigen DatenbanksicherungThis process takes longer than restoring from the 6:00 P.M. von 18:00 Uhr.full database backup.

  1. Erstellen Sie eine Sicherung des Protokollfragments des aktuell aktiven Transaktionsprotokolls zum Zeitpunkt des Fehlers.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Stellen Sie die vollständige Datenbanksicherung von 8:00 UhrRestore the 8:00 A.M. und anschließend alle vier Transaktionsprotokollsicherungen in der chronologischen Reihenfolge wieder her.full database backup, and then restore all four transaction log backups in sequence. Dadurch wird ein Rollforward für alle abgeschlossenen Transaktionen bis 21:45 Uhr ausgeführt.This rolls forward all completed transactions up to 9:45 P.M.

    Diese Alternative verdeutlicht, welche redundante Sicherheit eine zwischen eine Folge vollständiger Datenbanksicherungen geschaltete Kette von Transaktionsprotokollsicherungen bietet.This alternative points out the redundant security offered by maintaining a chain of transaction log backups across a series of full database backups.

HINWEIS: In einigen Fällen können Sie auch mit Transaktionsprotokollen eine Datenbank zu einem bestimmten Zeitpunkt wiederherstellen.NOTE: In some cases, you can also use transaction logs to restore a database to a specific point in time. Informationen finden Sie unter Wiederherstellen einer SQL Server-Datenbank zu einem Zeitpunkt (vollständiges Wiederherstellungsmodell)bezeichnet.For more information, Restore a SQL Server Database to a Point in Time (Full Recovery Model).

So wenden Sie eine Transaktionsprotokollsicherung anTo apply a transaction log backup

Siehe auchSee also

Das Transaktionsprotokoll (SQL Server)The Transaction Log (SQL Server)