Как выполнить восстановление на момент времени (Transact-SQL)

В этом разделе разъясняется процедура восстановления на момент времени.

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

  1. Выполните инструкцию RESTORE DATABASE с параметром NORECOVERY.

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

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

  2. Выполните инструкцию RESTORE LOG для применения всех резервных копий журнала транзакций, указав при этом:

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

    • устройство резервного копирования, откуда происходит восстановление резервной копии журнала транзакций;

    • параметры RECOVERY и STOPAT. Если в резервной копии журнала транзакций не содержится требуемое время (например, если указанное время выходит за рамки времени, отраженного в журнале транзакций), создается предупреждение и база данных остается невосстановленной.

Пример

В следующем примере база данных восстанавливается в состояние на 12:00 AMApril 15, 2020 и демонстрируется операция восстановления, использующая несколько резервных копий журналов. На устройстве резервного копирования AdventureWorks2008R2Backups полная резервная копия базы данных, подлежащей восстановлению, — это третий резервный набор данных на устройстве (FILE = 3), резервная копия первого журнала — это четвертый резервный набор (FILE = 4), резервная копия второго журнала — это пятый резервный набор (FILE = 5).

Важное примечаниеВажно!

В базе данных База данных AdventureWorks2008R2 используется простая модель восстановления. Чтобы разрешить создание резервных копий журналов, перед проведением полного резервного копирования база данных должна быть настроена на использование модели полного восстановления путем выполнения инструкции ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL.

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2008R2 WITH RECOVERY; 
GO