Поделиться через


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

Область применения: SQL Server

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

Можно в качестве точки восстановления во время операции восстановления использовать номер LSN. Однако эта специальная возможность предназначена для средств поставщика, и представляется сомнительным, чтобы она могла оказаться в целом полезной.

Общие сведения о регистрационных номерах транзакций в журнале

Регистрационные номера транзакций (LSN) в журнале используются во время последовательности восстановления для отслеживания момента времени, на который восстанавливаются данные. При восстановлении резервной копии данные восстанавливаются к регистрационному номеру транзакции в журнале, который соответствует моменту времени создания резервной копии. Разностные резервные копии и резервные копии журналов продвигают восстанавливаемую базу данных к более позднему моменту, которому соответствует больший регистрационный номер транзакции в журнале. Дополнительные сведения о номерах LSN см. в разделах Руководство по архитектуре журнала транзакций SQL Server и управлению им.

Примечание.

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

Просмотр регистрационных номеров транзакций в журнале, используемых при создании резервных копий и восстановлении

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

Примечание.

Регистрационные номера транзакций также появляются в некоторых текстовых сообщениях в журнале ошибок.

Синтаксис языка 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)
Обзор процессов восстановления (SQL Server)
Руководство по архитектуре журнала транзакций SQL Server и управлению им