Wiederherstellen zu einer Protokollfolgenummer (SQL Server)
Dieses Thema ist nur für Datenbanken relevant, die das vollständige oder das massenprotokollierte Wiederherstellungsmodell verwenden.
Sie können eine Protokollfolgenummer (Log Sequence Number, LSN) zum Definieren des Wiederherstellungspunkts für einen Wiederherstellungsvorgang verwenden. Hierbei handelt es sich jedoch um eine auf Anbieter von Tools zugeschnittene Funktion, die nur in speziellen Fällen nutzbringend anzuwenden ist.
Übersicht der Protokollfolgenummern
Mit LSNs wird intern während einer RESTORE-Sequenz der Zeitpunkt nachverfolgt, bis zu dem Daten wiederhergestellt wurden. Wenn eine Sicherung wiederhergestellt wird, werden die Daten bis zu der LSN wiederhergestellt, die dem Zeitpunkt entspricht, an dem die Sicherung erstellt wurde. Durch differenzielle Sicherungen und Protokollsicherungen wird ein späterer Status der Datenbank wiederhergestellt, was wiederum einer höheren LSN entspricht.
Jeder Datensatz im Transaktionsprotokoll wird eindeutig durch eine Protokollfolgenummer (Log Sequence Number, LSN) identifiziert. LSNs halten sich an eine bestimmte Reihenfolge. Wenn LSN2 größer als LSN1 ist, erfolgte die durch den Protokolldatensatz von LSN2 beschriebene Änderung nach der durch den Protokolldatensatz von LSN1 beschriebenen Änderung.
Die LSN eines Protokolldatensatzes, bei dem ein wichtiges Ereignis aufgetreten ist, kann zum Erstellen richtiger Wiederherstellungssequenzen hilfreich sein. Da LSNs geordnet sind, können sie auf Gleichheit und Ungleichheit (d. a<. , >, =, =<, >=) verglichen werden. Solche Vergleiche sind beim Erstellen von Wiederherstellungssequenzen hilfreich.
Hinweis
LSNs sind Werte vom Datentyp numeric
(25,0). Arithmetische Operationen (z. B. Addition oder Subtraktion) sind ohne Bedeutung und dürfen für LSNs nicht verwendet.
Anzeigen von LSNs, die von der Sicherung und Wiederherstellung verwendet werden
Die LSN eines Protokolldatensatzes, bei dem ein bestimmtes Sicherungs- und Wiederherstellungsereignis aufgetreten ist, kann mithilfe der folgenden Methoden angezeigt werden:
Hinweis
LSNs werden auch in manchen Meldungstexten angezeigt.
Transact-SQL-Syntax für die Wiederherstellung bis zu einer LSN
Mithilfe einer RESTORE -Anweisung können Sie an oder direkt vor der LSN stoppen, wie im Folgenden gezeigt:
Verwenden Sie die WITH STOPATMARK ='lsn:<lsn_number>'- Klausel, wobei lsn:<lsnNumber> eine Zeichenfolge ist, die angibt, dass der Protokolldatensatz, der den angegebenen LSN enthält, der Wiederherstellungspunkt ist.
Von STOPATMARK wird ein Rollforward zur LSN ausgeführt und dieser Protokolldatensatz im Rollforward eingeschlossen.
Verwenden Sie die WITH STOPBEFOREMARK ='lsn:<lsn_number>'- Klausel, wobei lsn:<lsnNumber> eine Zeichenfolge ist, die angibt, dass der Protokolldatensatz unmittelbar vor dem Protokolldatensatz, der die angegebene LSN-Nummer enthält, der Wiederherstellungspunkt ist.
Von STOPBEFOREMARK wird ein Rollforward bis zur LSN ausgeführt und dieser Protokolldatensatz aus dem Rollforward ausgeschlossen.
Typischerweise wird eine bestimmte Transaktion zum Einschließen oder Ausschließen ausgewählt. Praktisch handelt es sich bei dem angegebenen Protokolldatensatz um einen Transaktionscommitdatensatz, wobei diese Angabe nicht zwingend erforderlich ist.
Beispiele
In diesem Beispiel wird davon ausgegangen, dass die AdventureWorks
-Datenbank so geändert wurde, dass das vollständige Wiederherstellungsmodell verwendet wird.
RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak'
WITH STOPATMARK = 'lsn:15000000040000037'
GO
Related Tasks
Wiederherstellen einer Datenbanksicherung (SQL Server Management Studio)
Wiederherstellen einer Transaktionsprotokollsicherung (SQL Server)
Wiederherstellen einer Datenbank in einer markierten Transaktion (SQL Server Management Studio)
Weitere Informationen
Anwenden von Transaktionsprotokollsicherungen (SQL Server)
Das Transaktionsprotokoll [SQL Server]
RESTORE (Transact-SQL)