Восстановление резервной копии журнала транзакций (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. В качестве значения параметра Состояние восстановления укажите состояние базы данных после операции восстановления.

    • Восстановить готовность базы данных к работе, выполнив откат незафиксированных транзакций. Невозможно восстановить дополнительные журналы транзакций. (RESTORE WITH RECOVERY)

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

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

    • Оставить базу данных в нерабочем состоянии и не производить откат незафиксированных транзакций. Можно восстановить дополнительные журналы транзакций. (RESTORE WITH NORECOVERY)

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

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

      Внимание

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

    • Оставить базу данных в режиме «только для чтения». Отменить незафиксированные транзакции, но сохранить отмененные действия в файле, чтобы результаты восстановления могли быть отменены. (RESTORE WITH STANDBY)

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

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

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

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

Внимание

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

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

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

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

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

    • Предложение NORECOVERY.

    В этой инструкции применяется следующая основная синтаксическая конструкция:

    ВОССТАНОВЛЕНИЕ ЖУРНАЛА DATABASE_NAME FROM <BACKUP_DEVICE> WITH NORECOVERY.

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

  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)