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


Резервные копии журналов (SQL Server)

Область применения: SQL Server

Эта статья относится только к резервному копированию и восстановлению баз данных SQL Server, использующих полные или массовые модели восстановления.

Резервная копия tail-log записывает все записи журнала, которые еще не были сохранены ( хвост журнала), чтобы предотвратить потерю работы и сохранить цепочку журналов без изменений. Прежде чем восстановить базу данных SQL Server до последней точки во времени, необходимо создать резервную копию хвоста журнала транзакций. Резервная копия tail-log — это последняя резервная копия плана восстановления для базы данных.

Не для всех сценариев восстановления требуется резервная копия заключительного фрагмента журнала. Если точка восстановления содержится в более ранней резервной копии журналов, вам не нужна резервная копия журналов. Резервная копия tail-log не требуется при перемещении или замене (перезаписи) базы данных и не требуется восстановить ее до точки времени после последней резервной копии.

Сценарии, для которых требуется резервное копирование журналов хвоста

Рекомендуется формировать резервную копию заключительного фрагмента журнала в следующих сценариях.

  • Если база данных находится в режиме «в сети» и следующим действием над базой данных должна быть операция восстановления, то прежде необходимо выполнить резервное копирование заключительного фрагмента журнала. Чтобы избежать ошибки для веб-базы данных, необходимо использовать WITH NORECOVERY параметр инструкции BACKUP Transact-SQL.

  • Если база данных, работающая в режиме «вне в сети», не запускается и необходимо восстановить базу данных, то в первую очередь необходимо выполнить резервное копирование заключительного фрагмента журнала. Так как в настоящее время транзакции не могут выполняться, используйте WITH NO_TRUNCATE этот параметр. NO_TRUNCATE фактически совпадает с резервным копированием журнала транзакций только для копирования. Использование WITH NORECOVERY является необязательным, так как в настоящее время транзакции не могут возникать.

  • Если база данных повреждена, попробуйте создать резервную копию tail-log с помощью WITH CONTINUE_AFTER_ERROR параметра инструкции BACKUP .

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

В следующей таблице перечислены NORECOVERYNO_TRUNCATEпараметры и CONTINUE_AFTER_ERROR параметрыBACKUP.

Параметр BACKUP LOG Комментарии
NORECOVERY Используйте NORECOVERY всякий раз, когда вы планируете продолжить операцию восстановления в базе данных. NORECOVERY принимает базу данных в состояние восстановления. Этот шаг гарантирует, что база данных не изменяется после резервного копирования журналов хвоста. Журнал усечен, если NO_TRUNCATE параметр или COPY_ONLY параметр также не указан.

Важно: избегайте использования NO_TRUNCATE, за исключением случаев, когда база данных повреждена или находится в автономном режиме. Чтобы получить монопольный доступ, может потребоваться поместить базу данных в однопользовательский режим , прежде чем выполнять восстановление с NORECOVERYпомощью. После восстановления снова задайте для базы данных многопользовательский режим.
CONTINUE_AFTER_ERROR Используйте CONTINUE_AFTER_ERROR только при резервном копировании хвоста поврежденной базы данных.

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

Резервные копии tail-log с неполными метаданными резервного копирования

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

Если резервная копия tail-log содержит неполные метаданные, в таблице has_incomplete_metadata набора резервных копий задано значение 1. Кроме того, в выходных данных RESTORE HEADERONLY HasIncompleteMetadataзадано значение 1.

Если метаданные в резервном копировании tail-log неполны, таблица backupfilegroup отсутствует большая часть сведений о файловых группах во время резервного копирования tail-log. backupfilegroup Большинство столбцов таблицы : NULLединственные значимые столбцы:

  • backup_set_id
  • filegroup_id
  • type
  • type_desc
  • is_readonly

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

Сведения о создании резервного копирования в журнале tail-log см. в статье Резервное копирование журнала транзакций при повреждении базы данных (SQL Server).

Чтобы восстановить резервную копию журнала транзакций, см. статью "Восстановление резервного копирования журнала транзакций" (SQL Server).