Восстановление базы данных на момент времени в пределах резервной копии

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

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

На приведенной ниже иллюстрации показан возврат к точке восстановления в середине журнала транзакций, созданной во время t9. Изменения в оставшейся части этой резервной копии и последующая резервная копия журналов, созданные во время t10, отменяются.

Восстановление на момент, расположенный посередине резервной копии журнала

Целевую точку восстановления можно указать как:

  • определенный момент времени в пределах журнала транзакций;

  • именованную метку, вставленную в запись журнала транзакций;

  • регистрационный номер транзакции в журнале (номер LSN).

ПримечаниеПримечание

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

Заданное время или транзакция всегда восстанавливается из резервной копии журналов, поэтому в резервной копии журналов транзакций должна присутствовать целевая точка восстановления. Чтобы восстановить базу данных к определенному моменту времени или транзакции, в предложении STOPAT, STOPATMARK или STOPBEFOREMARK укажите целевую точку восстановления. В каждой инструкции RESTORE LOG последовательности восстановления необходимо указать целевое время или транзакцию в таком же предложении STOPAT, STOPATMARK или STOPBEFOREMARK. При применении резервной копии журналов с точкой восстановления можно восстановить транзакции только до этой точки.

В качестве предварительного требования для восстановления на определенный момент времени сначала необходимо целиком восстановить резервную копию базы данных, конечная точка которой приходится раньше целевой точки восстановления. Чтобы упростить определение резервной копии базы данных, которую следует восстановить, можно дополнительно указать предложение WITH STOPAT, STOPATMARK или STOPBEFOREMARK в инструкции RESTORE DATABASE, чтобы вызвать ошибку, если резервная копия данных окажется слишком поздней для заданного целевого времени. Но полная резервная копия базы данных восстанавливается всегда, даже если в ней есть целевое время.

ПримечаниеПримечание

Путь восстановления к резервной копии журнала должен совпадать с путем к полной или частичной резервной копии базы данных, восстанавливаемой в начале последовательности восстановления на момент времени.

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

Если последовательность частичного восстановления исключает любые файловые группы FILESTREAM, восстановление на момент времени не поддерживается. Можно принудительно продолжить последовательность восстановления. Тем не менее файловые группы FILESTREAM, не вошедшие в инструкцию RESTORE, больше невозможно восстановить. Для принудительного восстановления на момент времени укажите параметр CONTINUE_AFTER_ERROR вместе с параметром STOPAT, STOPATMARK или STOPBEFOREMARK, который также должен указываться в последующих инструкциях RESTORE LOG. Если указать параметр CONTINUE_AFTER_ERROR, выполняется частичная последовательность восстановления, а файловая группа FILESTREAM становится невосстановимой.

ПримечаниеПримечание

Если в модели восстановления с неполным протоколированием резервная копия журнала содержит изменения с неполным протоколированием, то в пределах этой резервной копии восстановление до момента времени невозможно. База данных должна быть восстановлена до конца резервной копии журнала транзакций.

В этом разделе