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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Этот раздел относится только к модели полного восстановления и модели восстановления с неполным протоколированием.The topic is relevant only for the full recovery model or bulk-logged recovery model.

В этом разделе описано применение резервных копий журнала транзакции в процессе восстановления базы данных SQL ServerSQL Server .This topic describes applying transaction log backups as part of restoring a SQL ServerSQL Server database.

Требования к восстановлению резервных копий журналов транзакцийRequirements for restoring transaction log backups

Для применения резервной копии журнала транзакций необходимо выполнить следующие требования.To apply a transaction log backup, the following requirements must be met:

  • Достаточное количество резервных копий журналов для последовательности восстановления: Чтобы провести полную последовательность восстановления, в резервных копиях журнала должно быть достаточно записей.Enough Log Backups for a Restore Sequence : You must have enough log records backed up to complete a restore sequence. Необходимые резервные копии журнала, включая при необходимости резервные копии конца журнала , должны быть доступны перед запуском последовательности восстановления.The necessary log backups, including the tail-log backup where required, must be available before the start of the restore sequence.

  • Правильный порядок восстановления: Сначала необходимо восстановить предыдущую полную или разностную резервную копию базы данных.Correct restore order: The immediately previous full database backup or differential database backup must be restored first. После этого в хронологическом порядке необходимо восстановить все журналы транзакций, созданные после указанной полной или разностной резервной копии.Then, all transaction logs that are created after that full or differential database backup must be restored in chronological order. Если резервная копия журнала транзакций в этой цепочке журналов утрачена или повреждена, то восстановить можно только журналы транзакций до отсутствующего журнала.If a transaction log backup in this log chain is lost or damaged, you can restore only transaction logs before the missing transaction log.

  • База данных еще не восстановлена: Базу данных нельзя восстановить до тех пор, пока не будет применен последний журнал транзакций.Database not yet recovered: The database cannot be recovered until after the final transaction log has been applied. Если база данных восстанавливается после восстановления одной из промежуточных резервных копий журнала транзакций, расположенной перед концом цепочки журналов, базу данных после этой точки можно восстановить без перезапуска всей последовательности восстановления, начинающейся с полной резервной копии базы данных.If you recover the database after restoring one of the intermediate transaction log backups, that before the end of the log chain, you cannot restore the database past that point without restarting the complete restore sequence, starting with the full database backup.

    СОВЕТ.TIP! Лучше всего восстановить все резервные журналы (RESTORE LOG имя_базы_данных WITH NORECOVERY).A best practice is to restore all the log backups (RESTORE LOG database_name WITH NORECOVERY). После восстановления последней резервной копии журнала восстановите базу данных отдельной операцией (RESTORE DATABASE имя_базы_данных WITH RECOVERY).Then, after restoring the last log backup, recover the database in a separate operation (RESTORE DATABASE database_name WITH RECOVERY).

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

По завершении операции восстановления и восстановления базы данных будет произведен откат всех незавершенных транзакций.When you finish the restore operation and recover the database, recovery rolls back all incomplete transactions. Этот шаг называется стадией отката.This is known as the undo phase. Откат требуется для восстановления целостности базы данных.Rolling back is required to restore the integrity of the database. После отката база данных включается в режим «в сети», и больше никакие резервные копии журнала транзакций не могут быть применены.After rollback, the database goes online, and no more transaction log backups can be applied to the database.

Например, серия резервных копий журнала транзакций содержит долго выполняющуюся транзакцию.For example, a series of transaction log backups contain a long-running transaction. Начало транзакции записано в первой резервной копии журнала транзакций, а конец транзакции записан во второй резервной копии журнала транзакций.The start of the transaction is recorded in the first transaction log backup, but the end of the transaction is recorded in the second transaction log backup. В первой резервной копии журнала транзакций нет записи об операции фиксации или отката.There is no record of a commit or rollback operation in the first transaction log backup. Если операция восстановления запускается при применении первой резервной копии журнала транзакций, то долго выполняющаяся транзакция рассматривается как незавершенная, а изменения в данных, записанные в первой резервной копии журнала транзакций, будут отменены.If a recovery operation runs when the first transaction log backup is applied, the long-running transaction is treated as incomplete, and data modifications recorded in the first transaction log backup for the transaction are rolled back. SQL ServerSQL Server не позволяет применять вторую резервную копию журнала транзакций.does not allow for the second transaction log backup to be applied after this point.

ПРИМЕЧАНИЕ. В некоторых обстоятельствах при восстановлении журнала можно явно добавить файл.NOTE: In some circumstances, you can explicitly add a file during log restore.

Использование резервных копий журнала для восстановления до точки сбояUse log backups to restore to the failure point

Предполагается такая последовательность событий.Assume the following sequence of events.

TimeTime СобытиеEvent
8:008:00 A.M. Создание резервной копии базы данных для создания полной резервной копии базы данных.Back up database to create a full database backup.
ПолденьNoon Резервное копирование журнала транзакций.Back up transaction log.
16:004:00 P.M. Резервное копирование журнала транзакций.Back up transaction log.
18:006:00 P.M. Создание резервной копии базы данных для создания полной резервной копии базы данных.Back up database to create a full database backup.
20:008:00 P.M. Резервное копирование журнала транзакций.Back up transaction log.
21:459:45 P.M. Произошел сбой.Failure occurs.

Объяснение этого примера последовательности резервных копий см. в разделе Резервные копии журналов транзакций (SQL Server).For an explanation of this example sequence of backups, see Transaction Log Backups (SQL Server).

Чтобы восстановить базу данных до ее состояния в 21:45To restore the database to its state at 9:45 P.M. (точка сбоя), может быть использована любая из следующих альтернативных процедур.(the point of failure), either of the following alternative procedures can be used:

Мы слушаем! Если вы обнаружили в этой статье устаревшие или недостоверные сведения, например инструкции или пример кода, сообщите нам.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Можно воспользоваться кнопкой Эта страница в разделе Отзывы внизу страницы.You can click the This page button in the Feedback section at the bottom of this page. Обычно мы читаем отзывы про материалы по SQL на следующий день.We read every item of feedback about SQL, typically the next day. Благодарим вас.Thanks.

Вариант 1. Восстановление базы данных с помощью последней полной резервной копии базы данныхAlternative 1: Restore the database by using the most recent full database backup

  1. Создайте резервную копию заключительного фрагмента активного журнала транзакций на момент точки сбоя.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Не восстанавливайте полную резервную копию базы данных,Do not restore the 8:00 A.M. резервной копии базы данных от 18:00.full database backup. Вместо этого восстановите последнюю полную резервную копию, созданную в 18:00:00Instead, restore the more recent 6:00 P.M. а затем примените резервную копию журналаfull database backup, and then apply the 8:00 P.M. и резервную копию заключительного фрагмента журнала, созданные в 20:00:00.log backup and the tail-log backup.

Вариант 2. Восстановление базы данных с использованием более ранней полной резервной копии базы данныхAlternative 2: Restore the database by using an earlier full database backup

Этот вариант можно использовать в том случае, если проблема не позволяет воспользоваться полнойThis alternative process is useful if a problem prevents you from using the 6:00 P.M. резервной копии базы данных от 18:00.full database backup. Этот процесс занимает больше времени, чем восстановление полнойThis process takes longer than restoring from the 6:00 P.M. резервной копии базы данных от 18:00.full database backup.

  1. Создайте резервную копию заключительного фрагмента активного журнала транзакций на момент точки сбоя.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Восстановите полную резервную копиюRestore the 8:00 A.M. базы данных от 8:00, а затем последовательно восстановите все четыре резервные копии журнала транзакций.full database backup, and then restore all four transaction log backups in sequence. Это позволяет произвести накат всех завершенных транзакций вплоть до 21:45.This rolls forward all completed transactions up to 9:45 P.M.

    Этот вариант указывает на избыточную безопасность, предлагаемую цепочкой резервных копий журнала транзакций в серии полных резервных копий базы данных.This alternative points out the redundant security offered by maintaining a chain of transaction log backups across a series of full database backups.

В некоторых случаях журналы транзакций могут также использоваться для восстановления базы данных на определенный момент времени.In some cases, you can also use transaction logs to restore a database to a specific point in time. Дополнительные сведения см. в разделе Восстановление базы данных SQL Server до определенного момента времени (модель полного восстановления).For more information, Restore a SQL Server Database to a Point in Time (Full Recovery Model).

Related tasksRelated tasks

Использование резервной копии журнала транзакцийTo apply a transaction log backup

Восстановление до нужной точки восстановленияTo restore to your recovery point

Восстановление базы данных после восстановления резервных копий с параметром WITH NORECOVERYTo recover a database after restoring backups using WITH NORECOVERY

См. также разделSee also

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