Восстановление до номера LSN (SQL Server)
Этот раздел относится только к тем базам данных, которые используют модель полного восстановления или модель восстановления с неполным протоколированием.
Можно в качестве точки восстановления во время операции восстановления использовать номер LSN. Однако эта специальная возможность предназначена для средств поставщика, и представляется сомнительным, чтобы она могла оказаться в целом полезной.
Общие сведения о регистрационных номерах транзакций в журнале
Регистрационные номера транзакций (LSN) в журнале используются во время последовательности восстановления для отслеживания момента времени, на который восстанавливаются данные. При восстановлении резервной копии данные восстанавливаются к регистрационному номеру транзакции в журнале, который соответствует моменту времени создания резервной копии. Разностные резервные копии и резервные копии журналов продвигают восстанавливаемую базу данных к более позднему моменту, которому соответствует больший регистрационный номер транзакции в журнале.
Каждая запись в журнале транзакций однозначно идентифицируется регистрационным номером транзакции в журнале (номером LSN). Регистрационные номера транзакций в журнале упорядочены таким образом, что если два изменения описываются записями в журнале, помеченными номерами LSN1 и LSN2, а LSN2 больше LSN1, то изменение, помеченное номером LSN2, произошло после изменения LSN1.
Регистрационный номер транзакции в журнале, в которой произошло важное событие, может оказаться полезен при формировании правильных последовательностей восстановления. Поскольку регистрационные номера транзакций в журнале упорядочены, их можно проверять на равенство и неравенство (то есть <, >, =, <=, >=). Такие сравнения полезны при построении последовательностей восстановления.
![]() |
---|
Регистрационные номера транзакций в журнале — это значения типа numeric(25,0). Арифметические операции (например сложение или вычитание) не имеют смысла и не должны использоваться для регистрационных номеров транзакций в журнале. |
[В начало]
Просмотр регистрационных номеров транзакций в журнале, используемых при создании и восстановлении резервных копий
Регистрационный номер транзакции в журнале, которому соответствует данное событие создания резервной копии или восстановления можно просмотреть в следующих источниках:
представления каталога sys.database_files; sys.master_files
![]() |
---|
Также регистрационные номера транзакций в журнале появляются в некоторых текстовых сообщениях. |
Синтаксис языка 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 Management Studio)
Восстановление резервной копии журнала транзакций (SQL Server)
Восстановление базы данных до точки сбоя в модели полного восстановления (Transact-SQL)
Восстановление базы данных до помеченной транзакции (среда SQL Server Management Studio)