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


Применение резервных копий журналов транзакций (SQL Server)

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

В этом разделе описано применение резервных копий журнала транзакции в процессе восстановления базы данных SQL Server .

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

Требования к восстановлению резервных копий журналов транзакций

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

  • Достаточное количество резервных копий журналов для последовательности восстановления: Чтобы провести полную последовательность восстановления, в резервных копиях журнала должно быть достаточно записей. Необходимые резервные копии журнала, включая при необходимости резервные копии конца журнала , должны быть доступны перед запуском последовательности восстановления.

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

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

    Совет

    Лучше всего восстановить все резервные журналы (RESTORE LOG имя_базы_данных WITH NORECOVERY). После восстановления последней резервной копии журнала восстановите базу данных отдельной операцией (RESTORE DATABASE имя_базы_данных WITH RECOVERY).

Журналы восстановления и транзакций

По завершении операции восстановления и восстановления базы данных будет произведен откат всех незавершенных транзакций. Этот шаг называется стадией отката. Откат требуется для восстановления целостности базы данных. После отката база данных включается в режим «в сети», и больше никакие резервные копии журнала транзакций не могут быть применены.

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

Примечание

В некоторых обстоятельствах при восстановлении журнала можно явно добавить файл.

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

Предполагается такая последовательность событий.

Time Событие
8:00 Создание резервной копии базы данных для создания полной резервной копии базы данных.
Полдень Резервное копирование журнала транзакций.
16:00 Резервное копирование журнала транзакций.
18:00 Создание резервной копии базы данных для создания полной резервной копии базы данных.
20:00 Резервное копирование журнала транзакций.
21:45 Произошел сбой.

Примечание

Описание этой последовательности резервного копирования см. в разделе Резервные копии журналов транзакций (SQL Server)..

Для восстановления базы данных до ее состояния в 21:45 (точка сбоя) может быть использована любая из следующих альтернативных процедур.

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

  1. Создайте резервную копию заключительного фрагмента активного журнала транзакций на момент точки сбоя.

  2. Не восстанавливайте полную резервную копию базы данных, созданную в 08:00:00. Вместо этого восстановите последнюю полную резервную копию базы данных, сделанную в 18:00, а затем примените резервную копию журнала, сделанную в 20:00 и резервную копию заключительного фрагмента журнала.

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

Примечание

Этот вариант можно использовать, если проблема не позволяет воспользоваться полной резервной копией базы данных от 18:00. Этот процесс занимает больше времени, чем восстановление полной резервной копии базы данных от 18:00.

  1. Создайте резервную копию заключительного фрагмента активного журнала транзакций на момент точки сбоя.

  2. Восстановите полную резервную копию базы данных от 8:00, а затем последовательно восстановите все четыре резервные копии журнала транзакций. Это позволяет произвести накат всех завершенных транзакций вплоть до 21:45.

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

Примечание

В некоторых случаях журналы транзакций могут также использоваться для восстановления базы данных на определенный момент времени. Дополнительные сведения см. в статье Восстановление базы данных SQL Server до точки во времени (модель полного восстановления).

Связанные задачи

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

Восстановление до нужной точки восстановления

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

См. также:

Журнал транзакций (SQL Server)