Восстановление по журналу на определенный момент времени
Сведения в этом разделе относятся только к тем базам данных SQL Server, которые используют полную модель восстановления или модель восстановления с неполным протоколированием.
Если в модели восстановления с неполным протоколированием резервная копия журнала содержит изменения с неполным протоколированием, то в пределах этой резервной копии восстановление до момента времени невозможно. База данных должна быть восстановлена к концу резервной копии журнала транзакций.
Восстановление на момент времени
Синтаксис языка Transact-SQL для восстановления на определенный момент времени
Восстановление на момент времени всегда производится из резервной копии журналов. В каждой инструкции RESTORE LOG последовательности восстановления необходимо указать целевое время или транзакцию в идентичном предложении STOPAT. В качестве предварительного условия для восстановления на момент времени необходимо сначала восстановить полную резервную копию базы данных, чья конечная точка предшествует моменту времени восстановления. Эта полная резервная копия базы данных может быть старше самой последней полной резервной копии базы данных, поскольку затем восстанавливается каждая последующая резервная копия журналов, вплоть до резервной копии журналов, содержащей целевой момент времени.
Чтобы облегчить выбор резервной копии базы данных для восстановления, можно указать в инструкции RESTORE DATABASE предложение WITH STOPAT, которое вызовет ошибку, если данные резервной копии являются слишком новыми для указанного целевого времени. Резервная копия базы данных восстанавливается полностью, даже если она содержит целевое время.
Базовый синтаксис:
RESTORE LOG database_name FROM <устройство_резервного_копирования> WITH STOPAT =time, RECOVERY…
Точка восстановления является самой последней фиксацией транзакции, которая произошла во время или до заданного зачения datetime, указанного в time.
Чтобы восстановить только изменения до определенного момента времени, для каждой восстанавливаемой резервной копии укажите WITH STOPAT = time. Это гарантирует, что конечное время не будет пропущено.
Обычно сценарий последовательного восстановления состоит из следующих этапов.
Восстановите последнюю полную резервную копию и, если таковая имеется, последнюю разностную резервную копию без восстановления базы данных (RESTORE DATABASE имя_базы_данных FROM устройство_резервного_копирования WITH NORECOVERY).
Восстановите каждую резервную копию журнала транзакций в той же последовательности, в которой они были созданы, указывая время, когда необходимо остановить восстановление журнала (RESTORE DATABASE имя_базы_данных FROM <устройство_резервного_копирования> WITH STOPAT**=time,** RECOVERY).
Дополнительные сведения см. в разделе Восстановление базы данных на момент времени в пределах резервной копии.
См. также