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

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

В этой статье описано, как создать резервную копию журнала транзакций при повреждении базы данных в SQL Server с помощью SQL Server Management Studio или Transact-SQL.

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

Перед началом

Ограничения

  • Инструкция BACKUP не разрешена в явных и неявных транзакциях.

Рекомендации

  • В базе данных, использующей модель полного восстановления или модель восстановления с неполным протоколированием, в большинстве случаев требуется, чтобы перед восстановлением базы данных была создана резервная копия заключительного фрагмента журнала. Также необходимо выполнить резервное копирование заключительного фрагмента журнала базы данных-источника перед переходом на другой ресурс конфигурации доставки журналов. Восстановление резервной копии заключительного фрагмента журнала в качестве заключительной резервной копии перед восстановлением базы данных позволяет избежать потери работы после сбоя. Дополнительные сведения о резервных копиях заключительного фрагмента журнала см. в разделе Резервные копии заключительного фрагмента журнала (SQL Server).

Безопасность

Разрешения

Разрешения BACKUP DATABASE и BACKUP LOG назначены по умолчанию членам предопределенной роли сервера sysadmin и предопределенным ролям базы данных db_owner и db_backupoperator .

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

Использование среды SQL Server Management Studio

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

  1. После подключения к соответствующему экземпляру ядро СУБД Microsoft SQL Server в обозреватель объектов щелкните имя сервера, чтобы развернуть дерево сервера.

  2. Раскройте узел Базы данныхи в зависимости от типа восстанавливаемой базы данных выберите пользовательскую базу данных или раскройте узел Системные базы данных и выберите системную базу данных.

  3. Щелкните правой кнопкой мыши базу данных, выберите пункт Задачи, а затем команду Создать резервную копию. Откроется диалоговое окно Резервное копирование базы данных .

  4. В списке База данных проверьте имя базы данных. При необходимости можно выбрать другую базу данных из списка.

  5. Убедитесь в том, что используется либо модель восстановления FULL , либо BULK_LOGGED.

  6. Выберите Журнал транзакций в списке Тип резервного копирования.

  7. Оставьте снятым флажок Резервная копия только для копирования .

  8. В области Набор резервного копирования оставьте имя резервного набора данных, предложенное по умолчанию в текстовом поле Имя , или введите другое имя резервного набора данных.

  9. Введите описание резервной копии заключительного фрагмента журнала в текстовом поле Описание .

  10. Укажите, когда истекает срок действия резервного набора данных.

    • Чтобы задать срок действия резервного набора данных, выберите пункт После (параметр по умолчанию) и введите срок действия набора в днях с момента его создания. Это значение может быть задано в диапазоне от 0 до 99 999 дней. Значение 0 означает, что срок действия резервного набора данных не ограничен.

      Значение по умолчанию задается в параметре Срок хранения носителей резервных копий по умолчанию (дней) диалогового окна Свойства сервера (страницаПараметры базы данных ). Для этого щелкните правой кнопкой мыши имя сервера в обозревателе объектов и выберите его свойства, затем страницу Параметры базы данных .

    • Чтобы указать дату истечения срока действия резервного набора данных, выберите пункт Наи введите дату истечения срока действия резервного набора данных.

  11. Чтобы выбрать тип назначения резервной копии, выберите пункт Диск или Лента. Чтобы выбрать пути к 64 (или менее) дискам или накопителям на магнитной ленте, содержащим один набор носителей, нажмите кнопку Добавить. Выбранные пути отображаются в списке Создать резервную копию в .

    Чтобы удалить носитель резервной копии, выберите его и нажмите кнопку Удалить. Чтобы просмотреть содержимое носителя резервной копии, выберите его и щелкните Содержимое.

  12. На странице Параметры выберите параметр Переписать носитель , указав один из следующих вариантов.

    • Создать резервную копию в существующем наборе носителей

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

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

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

      Если оставить имя носителя пустым и установить рядом с ним флажок для проверки, имя носителя при успешном завершении также станет пустым.

    • Создать резервную копию в новом наборе носителей и удалить все существующие резервные наборы данных

      Для этого параметра введите имя в текстовом поле Имя нового набора носителей и при необходимости введите описание набора носителей в текстовое поле Описание нового набора носителей .

    Дополнительные сведения о параметрах набора носителей см. в разделе "Наборы носителей", "Семейства носителей" и резервные наборы резервных копий (SQL Server).

  13. В разделе Надежность можно установить следующие флажки.

    • Проверить резервную копию после завершения.

    • Рассчитать контрольную сумму перед записью на носитель.

    • Продолжить при ошибке контрольной суммы

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

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

    Это эквивалентно следующей инструкции BACKUP :

    BACKUP LOG <database_name> TO <backup_device> WITH NORECOVERY

    Внимание

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

  15. При резервном копировании на накопитель на магнитной ленте (как указано в разделе Назначение страницы Общие ) активен параметр Выгрузить ленту после резервного копирования . Щелкните этот параметр, чтобы активировать параметр Перемотать ленту перед выгрузкой .

  16. SQL Server 2008 (10.0.x) Enterprise и более поздних версий поддерживает сжатие резервных копий. По умолчанию сжатие резервных копий зависит от значения параметра конфигурации сервера backup-compression default . Однако независимо от текущего значения по умолчанию на уровне сервера можно сжать резервные копии, установив параметр Сжимать резервные копии, или отказаться от сжатия резервных копий, установив параметр Не сжимать резервные копии.

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

Использование Transact-SQL

Создание резервной копии активного журнала транзакций

  1. Для создания резервной копии активного журнала транзакций выполните инструкцию BACKUP LOG, указав:

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

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

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

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

Пример (Transact-SQL)

Примечание.

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

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

BACKUP LOG AdventureWorks2022  
   TO MyAdvWorks_FullRM_log1  
   WITH NO_TRUNCATE;  
GO  

См. также

Восстановление резервной копии журнала транзакций (SQL Server)
Восстановление базы данных SQL Server до определенного момента времени (модель полного восстановления)
Архивация базы данных (страница "Параметры резервного копирования")
Архивация базы данных (страница "Общие")
Применение резервных копий журналов транзакций (SQL Server)
BACKUP (Transact-SQL)
Восстановление файлов (простая модель восстановления)
Восстановление файлов (модель полного восстановления)