Восстановление базы данных из резервной копии в MS SQL Server 2012

logo_sql_2012Раннее я уже писал о создании резервных копий в MS SQL Server 2012. В данной статье подробно рассмотрим процессе восстановления базы данных из имеющейся резервной копии (резервных копий) в MS SQL Server 2012 (в более ранних версиях, например в MS SQL Server 2008 набор действий аналогичен).

 

 

0. Оглавление

  1. Восстановление базы данных
  2. Просмотр информации о событиях резервного копирования и восстановления для базы данных

1. Восстановление базы данных

Подключаемся к MS SQL Server c помощью программы  «SQL Server Management Studio». В Microsoft Windows Server 2012 R2 ее можно найти в списке всех программ.

Ustanovka_SQL_2012_23

В Microsoft Windows Server 2008 R2 в меню «Пуск» (Start) — «Microsoft SQL Server 2012» — «Среда SQL Server Management Studio».

Ustanovka_SQL_2012_23

Вводим адрес сервера или его псевдоним, данные для авторизации и нажимаем «Соединить» (Connect).

Слева, в обозревателе объектов (Object Explorer), раскрываем вкладку «Базы данных» (Server Oblects), находим в списке базу данных из которой (или в которую) необходимо восстановить данные, кликаем по ней правой кнопкой мыши, затем в появившемся контекстном меню выбираем «Задачи» (Tasks) — «Восстановить» (Restore) — «База данных…» (Database…)

vosstanovlenie-bd-ms-sql-server-2012_02

Запустится мастер восстановления базы данных (Restore Database). Выбираем базу источник (Source for restore), при этом мастер попробует автоматически подобрать последовательность файлов резервных копий для восстановления базы на текущий момент времени.

vosstanovlenie-bd-ms-sql-server-2012_03

Если же требуется загрузить данные из конкретного файла или устройства резервного копирования, то необходимо установить соответствующий переключатель в положение «Устройство» (From device) и вручную указать источник для восстановления.

vosstanovlenie-bd-ms-sql-server-2012_04

Затем необходимо выбрать базу данных назначения (Destination for restore), т. е. ту информационную базу в которую будут загружаться данные. Эта может быть как база с которой делалась резервная копия, так и любая другая база данных, зарегистрированная на текущем экземпляре SQL Server.

vosstanovlenie-bd-ms-sql-server-2012_05

Нажав кнопку «Временная шкала…» (Timeline) можно указать время на которое необходимо восстановить данные. При имеющейся копии журнала транзакций время восстановления можно выбрать с точностью до секунды (или имеющегося checkpoint’а в журнале транзакций).

vosstanovlenie-bd-ms-sql-server-2012_06

Очень важно (!) также помнить о том, что если восстановление данных осуществляется в информационную базу отличную от той с которой производилось резервное копирование (т. е. необходимо скопировать базу данных) то на вкладке «Файлы» (Files) необходимо указать путь к файлам этой информационной базы.

vosstanovlenie-bd-ms-sql-server-2012_07

На вкладке «Параметры» (Options) можно указать дополнительные параметры резервного копирования. В частности:

  • Флаг «Перезаписать существующую базу данных (WITH REPLACE)» (Overwrite the existing database) указывает, что операция восстановления перезапишет файлы любой базы данных, в настоящее время использующей имя, указанное в качестве базы данных назначения.
  • Флаг «Сохранить параметры репликации (WITH KEEP_REPLICATION)» (Preserve the replication settings) сохраняет настройки репликации при восстановлении опубликованной базы данных на сервере, отличном от сервера, на котором была создана база данных. Этот параметр имеет значение, только если во время создания резервной копии проводилась репликация базы данных.
  • Флаг «Ограничение доступа к восстановленной базе данных (WITH RESTRICTED_USER)» (Restrict access to the restored database) ограничит доступ к базе данных, за исключением пользователей с правами db_owner, dbcreator или sysadmin. Данный параметр имеет смысл использовать, например, если необходимо последовательно восстановить базу из нескольких файлов резервных копий, и доступ пользователей необходимо ограничить до завершения всех операций по восстановлению данных.
  • Если оставить флаг «Создание резервной копии заключительного фрагмента журнала перед восстановлением» (Take tail-log backup before restore) то будет создана резервная копия заключительного фрагмента журнала транзакций. Если для точки во времени, выбранной в окне «Временная шкала резервного копирования» (Backup Timeline) требуется резервная копия заключительного фрагмента журнала, этот флажок будет установлен и снять его будет нельзя.
  • Флаг «Закрыть существующие соединения» (Close existing connections option) переводит базу данных в однопользовательский режим перед началом выполнения процедуры восстановления, а затем возвращает в многопользовательский режим после ее завершения.
  • Ну и наконец, флаг «Выдавать приглашение перед восстановлением каждой резервной копии» (Prompt before restoring each backup) указывает, что после восстановления каждой резервной копии будет выводиться диалоговое окно с вопросом, нужно ли продолжать последовательность восстановления. Этот параметр позволяет приостанавливать последовательность восстановления после восстановления каждой резервной копии. Он будет полезен, например, когда нужно поменять ленты в устройстве, если на сервере имеется только одно ленточное устройство.

vosstanovlenie-bd-ms-sql-server-2012_08

Когда все необходимые параметры установлены нажимаем «ОК» для запуска процесса восстановления базы данных. После того, как все операции по восстановлению будут завершены увидим соответствующее уведомление.

vosstanovlenie-bd-ms-sql-server-2012_09

 2. Просмотр информации о событиях резервного копирования и восстановления для базы данных

Для того чтобы узнать, когда производилось создание резервных копий конкретной базы данных, а также восстановление базы данных из резервной копии, можно воспользоваться стандартным отчетом «События резервного копирования и восстановления» (Backup and Restore Events). Для формирования данного отчета необходимо в Обозревателе объектов (Server Oblects) кликнуть правой кнопкой мыши по соответствующей базе данных, в контекстном меню выбрать «Отчеты» (Reports) — «Стандартный отчет» (Standart Reports) — «События резервного копирования и восстановления» (Backup and Restore Events).

vosstanovlenie-bd-ms-sql-server-2012_10

Сформировавшийся отчет содержит в себе следующие данные:

  • Среднее время, затрачиваемое на операции резервного копирования (Average Time Taken For Backup Operations)
  • Успешные операции резервного копирования (Saccessful Backup Operations)
  • Ошибки операции резервного копирования (Backup Operation Errors)
  • Успешные операции восстановления (Saccessful Restore Operations)

vosstanovlenie-bd-ms-sql-server-2012_11

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

vosstanovlenie-bd-ms-sql-server-2012_12

Помогла ли Вам данная статья?
Да, спасибо, все получилось.
Немного помогла.
Совсем не помогла.
Не то, что я искал(а)
Смотреть результаты
Запись опубликована в рубрике Microsoft SQL Server 2012 с метками , . Добавьте в закладки постоянную ссылку.


12 Responses to Восстановление базы данных из резервной копии в MS SQL Server 2012

  1. Марк Киров говорит:

    А можно в видеоигры играть как на Windows потребительская (пользовательская версия) ?

    P.S.: замечательные статьи о Windows Server — Большое Спасибо!

  2. Аноним говорит:

    хорошая игра, жаль прошел быстро(

  3. Ярослав говорит:

    Вы пишите:

    ————————————-
    Очень важно (!) также помнить о том, что если восстановление данных осуществляется в информационную базу отличную от той с которой производилось резервное копирование (т. е. необходимо скопировать базу данных) то на вкладке «Файлы» (Files) необходимо указать путь к файлам этой информационной базы.
    ————————————-

    У вас восстановление из базы в базу приведено.

    Я на практике проверил, что восстановление из файлового бекапа рабочей базы в копию рабочей базы — mssql вообще никак не реагирует на эти пути, заданные вручную (к базе и логу транзакций). Похоже, эти пути берет из «базы назначения».

    • Виталий Онянов говорит:

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

      • Дмитрий говорит:

        Такое поведение на старых версиях SQL (2008, 2012). По привычке проверяю и на новых.

      • Андрей говорит:

        слышал что существует настройка куда восстанавливать по умолчанию, в зависимости от этого предлагаются файлы самой базы-источника и ее журнала или файлы базы-приемника, не знаете где эта настройка?

  4. Александр говорит:

    Вроде все действия выполнил по шагам. При изменении наименования файлов «восстановить как» у меня не меняется «логическое имя файла», остается как в базе источник (Accounting а у вас на картинке указано что поменялось на Accounting_Demo). Я какой-то шаг пропустил или на это не обращать внимание?

    • Аноним говорит:

      Хотел уточнить, восстанавливаю бекап из рабочей базы в копию.

    • Виталий Онянов говорит:

      Добрый день. Логическое имя файла не меняется. Это нормально.

  5. Михаил говорит:

    Виталий, добрый день!

    воспользовался Вашим SQL-скриптом (Восстановление_БД1_из_созданной_копии_БД2)
    БД1 — 1c_tgk11_upp_copy3
    БД2 — 1c_upp_tgk11_copy1
    при первом запуски, все было замечательно (скрипт отработал база БД1 читается)
    при повторном запуски выходит сообщение:
    Ошибка восстановления полной резервной копии для базы данных 1c_tgk11_upp_copy3 Код ошибки: 3013 Текст ошибки: RESTORE DATABASE прервано с ошибкой. Текст T-SQL: RESTORE DATABASE [1c_tgk11_upp_copy3]
    FROM DISK = N’D:\Backup_SQL\\1c_upp_tgk11_copy1_2021-02-21T11-18-18.297.bak’
    WITH
    FILE = 1,
    MOVE N’1c_upp_tgk11′ TO N’D:\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\1c_tgk11_upp_copy3.mdf’,
    MOVE N’1c_upp_tgk11_log’ TO N’D:\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\1c_tgk11_upp_copy3_log.ldf’,
    RECOVERY,
    REPLACE,
    STATS = 5
    Подскажите где ошибка?
    Спасибо!

    • Виталий Онянов говорит:

      Тут текста ошибки нет. Попробуйте выполнить тест запроса, который вы привели в отдельном новом скрипте и посмотрите на результат (или текст ошибки).

  6. Артём говорит:

    Добрый день, может подскажите как быть.
    Есть некие mdf и ldf файлы, восстановленные с умершего диска.
    Как узнать версию sql с которой они работали, т.к. других данных кроме этих нет.
    На сколько я знаю, просто взять и подключить их в более высокую версию sql тоже не рекомендуется (пока что в процессе передачи файлов мне, но думаю попробую такой вариант)

Добавить комментарий для Виталий Онянов Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *