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


Восстановление резервной копии журнала транзакций (SQL Server)

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

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

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

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

Предварительные условия

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

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

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

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

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

Разрешения

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

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

Предупреждение

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

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

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

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

  3. Щелкните правой кнопкой мыши базу данных, выберите пункт Задачи, затем пункт Восстановитьи пункт Журнал транзакций. В результате откроется диалоговое окно Восстановление журнала транзакций .

    Примечание.

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

  4. На странице Общие в списке База данных выберите имя базы данных. Перечислены только базы данных, которые находятся в состоянии восстановления.

  5. Чтобы указать источник и расположение восстанавливаемых резервных наборов данных, выберите один из следующих вариантов.

    • Из предыдущих резервных копий базы данных

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

    • Из файла или с ленты

      Нажмите кнопку "Просмотр" (...), чтобы открыть диалоговое окно Выбор устройств резервного копирования. В окне Тип носителя резервной копии выберите один из перечисленных типов устройств. Чтобы выбрать одно или несколько устройств в окне Носитель резервной копии , нажмите кнопку Добавить.

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

  6. В сетке Выберите резервные копии журнала транзакций для восстановления выберите резервные копии для восстановления. В этой сетке перечислены резервные копии журналов транзакций, доступные для выбранной базы данных. Резервная копия журналов доступна только в том случае, если ее первый номер LSN больше, чем последний номер LSN базы данных. Резервные копии журналов перечислены в порядке содержащихся в них номеров LSN и должны быть восстановлены в этом порядке.

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

    Верхний колонтитул Значение
    Восстановить Установленные флажки показывают резервные наборы данных для восстановления.
    Имя Имя резервного набора.
    Компонент Компонент резервного копирования: база данных, файл или <пустой> (для журналов транзакций).
    База данных Имя базы данных, участвовавшей в операции резервного копирования.
    Дата начала Дата и время начала резервного копирования, представленные в соответствии с региональными стандартами клиента.
    Дата завершения Дата и время окончания резервного копирования, представленные в соответствии с региональными настройками клиента.
    Первый LSN Номер последовательности в журнале для первой транзакции в резервном наборе данных. Пустой для резервных копий файлов.
    Последний LSN Регистрационный номер в журнале для первой транзакции резервного набора данных Пустой для резервных копий файлов.
    Контрольная точка LSN Номер последовательности журнала последней контрольной точки на момент создания резервной копии.
    Полный номер LSN Регистрационный номер транзакции в журнале для последней полной резервной копии базы данных.
    Сервер Имя экземпляра ядра СУБД, выполнившего операцию резервного копирования.
    Имя пользователя Имя пользователя, выполнившего операцию резервного копирования.
    Размер Размер резервного набора данных в байтах.
    Занимаемая должность Позиция резервного набора данных в томе.
    Истечение срока действия Дата и время окончания срока действия резервного набора.
  7. Выберите один из следующих вариантов.

    • Момент времени

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

    • Помеченная транзакция

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

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

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

      Заголовок Значение
      <пусто> Отображает флажок для выбора маркера.
      Отметка транзакции Имя помеченной транзакции, заданное пользователем при фиксации транзакции.
      Дата Дата и время фиксации транзакции. Дата и время транзакции отображаются, в соответствии с данными в таблице msdbgmarkhistory , а не с датой и временем на клиентском компьютере.
      Description Описание помеченной транзакции, заданное пользователем при ее фиксации (при его наличии).
      LSN Регистрационный номер помеченной транзакции в журнале.
      База данных Имя базы данных, в которой была зафиксирована помеченная транзакция.
      Имя пользователя Имя пользователя базы данных, зафиксировавшего помеченную транзакцию.
  8. Чтобы просмотреть или выбрать дополнительные параметры, нажмите кнопку Параметры на панели Выбор страницы .

  9. В разделе Восстановление параметров предусмотрены следующие варианты выбора:

    • Сохранить параметры репликации (WITH KEEP_REPLICATION)

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

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

      Проверка этого параметра эквивалентна использованию параметра KEEP_REPLICATION в инструкции Transact-SQLRESTORE .

    • Запрашивать подтверждение перед восстановлением каждой резервной копии

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

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

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

    • Ограничить доступ к восстановленной базе данных (WITH RESTRICTED_USER)

      Доступ к восстановленной базе данных будет только у пользователей db_owner, dbcreatorили sysadmin.

      Проверка этого параметра является синонимом использования параметра RESTRICTED_USER в инструкции Transact-SQLRESTORE .

  10. В качестве значения параметра Состояние восстановления укажите состояние базы данных после операции восстановления.

    • Оставить базу данных готовой к использованию, откатив незафиксированные транзакции. Невозможно восстановить дополнительные журналы транзакций. (ВОССТАНОВЛЕНИЕ С ВОССТАНОВЛЕНИЕМ БЕЗОПАСНОСТИ)

      Восстанавливает базу данных. Этот параметр эквивалентен параметру RECOVERY в инструкции Transact-SQLRESTORE .

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

    • Оставить базу данных в нерабочем состоянии и не производить откат незафиксированных транзакций. Можно восстановить дополнительные журналы транзакций. (ВОССТАНОВЛЕНИЕ БЕЗ ВОССТАНОВЛЕНИЯ)

      Оставить базу данных в состоянии RESTORING (невосстановленном). Этот параметр эквивалентен использованию параметра NORECOVERY в инструкции Transact-SQLRESTORE .

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

      Внимание

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

    • Оставить базу данных в режиме «только для чтения». Отменить незафиксированные транзакции, но сохранить действия отмены в файле, чтобы эффекты восстановления могли быть отменены. (ВОССТАНОВЛЕНИЕ С РЕЖИМОМ ОЖИДАНИЯ)

      Оставляет базу данных в резервном состоянии. Этот параметр эквивалентен использованию параметра STANDBY в инструкции Transact-SQLRESTORE.

      При выборе этого параметра необходимо указать резервный файл.

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

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

Внимание

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

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

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

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

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

    • Опция NORECOVERY.

    Основной синтаксис этого выражения следующий:

    ВОССТАНОВИТЬ ЖУРНАЛ database_name ИЗ <backup_device> С NORECOVERY.

    Где database_name — это имя базы данных, а < — это имя устройства, содержащего журнал резервной копии, который восстанавливается.

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

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

    • Восстановите базу данных как часть последней инструкции RESTORE 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  
      

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

    Внимание

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

Примеры (Transact-SQL)

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

ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;  

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

В следующем примере база данных AdventureWorks2022 восстанавливается с помощью полной резервной копии базы данных, которая находится на устройстве резервного копирования с именем AdventureWorks2022_1. Затем применяется первая резервная копия журнала транзакций, находящаяся на устройстве с именем AdventureWorks2022_log. Наконец, пример восстанавливает базу данных.

RESTORE DATABASE AdventureWorks2022  
   FROM AdventureWorks2022_1  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2022  
   FROM AdventureWorks2022_log  
   WITH FILE = 1,  
   NORECOVERY;  
GO  
RESTORE DATABASE AdventureWorks2022  
   WITH RECOVERY;  
GO  

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

В следующем примере база данных AdventureWorks2022 восстанавливается с помощью полной резервной копии базы данных, которая находится на устройстве резервного копирования с именем AdventureWorks2022_1. Пример затем последовательно применяет первые три резервные копии журнала транзакций, находящиеся на устройстве с именем AdventureWorks2022_log. Наконец, пример восстанавливает базу данных.

RESTORE DATABASE AdventureWorks2022  
   FROM AdventureWorks2022_1  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2022  
   FROM AdventureWorks2022_log  
   WITH FILE = 1,  
   NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2022  
   FROM AdventureWorks2022_log  
   WITH FILE = 2,  
   NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2022  
   FROM AdventureWorks2022_log  
   WITH FILE = 3,  
   NORECOVERY;  
GO  
RESTORE DATABASE AdventureWorks2022  
   WITH RECOVERY;  
GO  

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

См. также

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