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


Как применить резервную копию журналов транзакций (Transact-SQL)

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

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

  • В последовательности восстановления должен указываться параметр WITH NORECOVERY, если восстанавливаются ранние резервные копии.

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

    RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
    
  • При применении последней резервной копии журналов можно сделать следующее.

    • Восстановить базу данных в составе последней инструкции BACKUP LOG:

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;
      GO
      
    • Подождать, а затем восстановить базу данных отдельной инструкцией RESTORE DATABASE:

      RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; 
      RESTORE DATABASE <database_name> WITH RECOVERY;
      GO
      

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

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

Во избежание неоднозначности в каждой инструкции WITH RECOVERY рекомендуется явное задание параметра WITH NORECOVERY или WITH RECOVERY. Это особенно важно учитывать при написании сценариев.

Использование резервной копии журнала транзакций

  1. Чтобы применить резервную копию журналов транзакций, выполните инструкцию RESTORE LOG, указав при этом:

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

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

    • предложение NORECOVERY.

    В этой инструкции применяется следующая основная синтаксическая конструкция:

    RESTORE LOG имя_базы_данных FROM <устройство_резервного_копирования> WITH NORECOVERY.

    Здесь имя_базы_данных — имя базы данных, а <устройство_резервного_копирования> — имя устройства, на котором содержится восстанавливаемая резервная копия журнала.

  2. Повторите шаг 1 для каждой резервной копии журналов транзакций, которые необходимо применить.

  3. После восстановления из последовательности восстановления последней резервной копии базу данных следует восстановить при помощи следующей инструкции:

    RESTORE имя_базы_данных WITH RECOVERY

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

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

Пример

По умолчанию база данных AdventureWorks пользуется простой моделью восстановления. В следующем примере для перехода на модель полного восстановления требуется изменить базу данных следующим образом:

ALTER DATABASE AdventureWorks SET RECOVERY FULL

А. Применение единичной резервной копии журналов транзакций

В следующем примере база данных AdventureWorks восстанавливается с помощью полной резервной копии базы данных, которая находится на устройстве резервного копирования с именем AdventureWorks_1. Затем применяется первая резервная копия журнала транзакций, находящаяся на устройстве с именем AdventureWorks_log. В заключение происходит восстановление базы данных.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorks_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 1,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
   WITH RECOVERY
GO

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

В следующем примере база данных AdventureWorks восстанавливается с помощью полной резервной копии базы данных, которая находится на устройстве резервного копирования с именем AdventureWorks_1. Затем последовательно применяются первые три копии журнала транзакций, находящиеся на устройстве с именем AdventureWorks_log. В заключение происходит восстановление базы данных.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorks_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 1,
   NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 2,
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
   FROM AdventureWorks_log
   WITH FILE = 3,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
   WITH RECOVERY
GO

См. также

Задания

Справочник

Основные понятия