Восстановление на основе номера последовательности журнала транзакций (SQL Server)

Этот раздел относится только к базам данных, использующим полные или массовые модели восстановления.

Для определения точки восстановления для операции восстановления можно использовать номер последовательности журнала (LSN). Однако это специализированная функция, предназначенная для поставщиков инструментов и вряд ли она будет общей полезной.

Общие сведения о номерах последовательности журналов

LSN используются во внутреннем процессе во время последовательности RESTORE для отслеживания точки во времени, до которой данные были восстановлены. При восстановлении резервной копии данные восстанавливаются в LSN, соответствующем моменту времени, в течение которого была выполнена резервная копия. Дифференциальные и журнальные резервные копии продвигают восстановленную базу данных на более поздний момент времени, соответствующий более высокому номеру LSN.

Каждая запись в журнале транзакций однозначно определяется номером последовательности журналов (LSN). LSN упорядочены таким образом, что если LSN2 больше LSN1, изменение, описанное записью журнала, на которую ссылается LSN2, произошло после изменения, описанного записью журнала LSN.

LSN записи журнала, в которой произошло значительное событие, может быть полезно для создания правильных последовательностей восстановления. Поскольку LSN упорядочены, их можно сравнить с равенством и неравенством (т<. е. , , =><=, =, >=). Такие сравнения полезны при создании последовательностей восстановления.

Замечание

LSN — это значения типа numericданных (25 0). Арифметические операции (например, добавление или вычитание) не являются значимыми и не должны использоваться с LSN.

Просмотр LSN, используемых при резервном копировании и восстановлении

LSN записи журнала, на которой произошло событие резервного копирования и восстановления, можно просмотреть с помощью одного или нескольких из следующих способов:

Замечание

LSN также отображаются в некоторых текстах сообщений.

Синтаксис Transact-SQL для восстановления до LSN

Используя инструкцию RESTORE , можно остановиться непосредственно перед LSN следующим образом:

  • Используйте предложение WITH STOPATMARK ='lsn:<lsn_number>, где lsn:<lsnNumber> — это строка, указывающая, что запись журнала, содержащая указанный LSN, является точкой восстановления.

    StopATMARK продвинется до LSN и включает эту запись журнала в продвижение.

  • Используйте предложение WITH STOPBEFOREMARK ='lsn:<lsn_number>', где lsn:<lsnNumber> — это строка, указывающая, что запись журнала непосредственно перед записью журнала, содержащей указанный номер LSN, является точкой восстановления.

    STOPBEFOREMARK продвигается вперед к LSN и исключает эту запись журнала из процесса продвижения вперед.

Как правило, конкретная транзакция выбирается для включения или исключения. Хотя и не требуется, на практике указанная запись журнала является записью фиксации транзакций.

Примеры

В следующем примере предполагается, что AdventureWorks база данных была изменена для использования полной модели восстановления.

RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak'   
WITH STOPATMARK = 'lsn:15000000040000037'  
GO  

Связанные задачи

См. также

Применение резервных копий журналов транзакций (SQL Server)
Журнал транзакций (SQL Server)
RESTORE (Transact-SQL)