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


Восстановление базы данных в новое расположение (SQL Server)

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

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

Перед началом работы

Ограничения и условия

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

Предпосылки

  • Модель полного или массового протоколирования восстановления требует, чтобы перед восстановлением базы данных была сделана резервная копия активного журнала транзакций. Дополнительные сведения см. в разделе Создание резервной копии журнала транзакций (SQL Server).

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

  • Чтобы восстановить зашифрованную базу данных, необходимо иметь доступ к сертификату или асимметричному ключу, который использовался для шифрования базы данных. Без сертификата или асимметричного ключа восстановить базу данных нельзя. Поэтому сертификат, используемый для шифрования ключа шифрования базы данных, должен храниться в течение всего времени, пока есть необходимость в резервной копии. Дополнительные сведения см. в статье SQL Server Certificates and Asymmetric Keys.

  • Дополнительные сведения о перемещении базы данных см. в разделе "Копирование баз данных с помощью резервного копирования и восстановления".

  • При восстановлении базы данных SQL Server 2005 или более поздней версии до SQL Server 2014 база данных автоматически обновляется. Как правило, база данных сразу становится доступной. Однако если в базе данных SQL Server 2005 есть полнотекстовые индексы, процесс обновления импортирует, сбрасывает или перестраивает их в зависимости от параметра свойства сервера upgrade_option . Если при обновлении выбран режим импорта (upgrade_option = 2) или перестроения (upgrade_option = 0), полнотекстовые индексы во время обновления будут недоступны. В зависимости от объема индексируемых данных процесс импорта может занять несколько часов, а перестроение — до десяти раз дольше. Обратите внимание, что если для обновления выбран режим «Импортировать», а полнотекстовый каталог недоступен, то связанные с ним полнотекстовые индексы будут перестроены. Чтобы изменить значение свойства сервера upgrade_option , следует использовать процедуру sp_fulltext_service.

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

В целях безопасности рекомендуется не подключать или восстанавливать базы данных из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных. Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.

Разрешения

Если восстанавливаемая база данных не существуют, для выполнения инструкции RESTORE у пользователя должны быть разрешения CREATE DATABASE. Если база данных существует, разрешения на выполнение инструкции RESTORE по умолчанию предоставлены членам предопределенных ролей сервера sysadmin и dbcreator , а также владельцу базы данных (dbo).

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

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

Восстановление базы данных в новом расположении и при необходимости переименование базы данных

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

  2. Щелкните правой кнопкой мыши Базы данных и выберите пункт Восстановление базы данных. Откроется диалоговое окно Восстановление базы данных .

  3. Чтобы указать источник и расположение восстанавливаемых резервных наборов данных, используйте страницу Общие , раздел Источник . Выберите один из следующих параметров:

    • База данных

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

    Замечание

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

    1. Устройство

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

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

      В списке Источник: Устройство: База данных выберите имя базы данных, которую нужно восстановить.

      Примечание. Этот список доступен, только если выбрано Устройство . Будут выбраны только те базы данных, резервные копии которых доступны на выбранном устройстве.

  4. В разделе Назначение , в поле База данных автоматически появится имя базы данных для восстановления. Для изменения имени базы данных введите новое имя в окно База данных .

  5. В поле «Восстановление в» оставьте значение по умолчанию как «К последней сделанной резервной копии» или щелкните на «Временная шкала», чтобы открыть диалоговое окно «Временная шкала резервного копирования» и вручную выбрать точку времени для остановки действия восстановления. Дополнительные сведения об указании конкретного момента времени см. в разделе Backup Timeline .

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

    Сведения о столбцах в наборах резервных копий для восстановления сетки см. в разделе "Восстановление базы данных (общая страница)".

  7. Чтобы указать новое расположение файлов базы данных, выберите страницу "Файлы " и нажмите кнопку "Переместить все файлы в папку". Предоставьте новое расположение для папки файла данных и папки файла журнала. Дополнительные сведения об этой сетке см. в разделе "Восстановление базы данных (страница файлов)".

  8. На странице Параметры настройте параметры, если в этом есть необходимость. Дополнительные сведения об этих параметрах см. в разделе "Восстановление базы данных (страница параметров)".

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

Восстановление базы данных в новом расположении и при необходимости переименование базы данных

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

    RESTORE FILELISTONLY FROM <BACKUP_DEVICE> WITH FILE = BACKUP_SET_FILE_NUMBER

    В этом случае аргумент номер_файла_резервного_набора указывает позицию резервной копии в наборе носителей. Положение резервного набора можно получить с помощью инструкции RESTORE HEADERONLY . Дополнительные сведения см. в разделе "Указание резервного набора данных" в аргументах RESTORE (Transact-SQL).

    Это выражение также поддерживает ряд опций WITH. Дополнительную информацию см. в разделе RESTORE FILELISTONLY (Transact-SQL).

  2. Используйте инструкцию RESTORE DATABASE для восстановления полной резервной копии базы данных. По умолчанию файлы данных и журналов восстанавливаются в исходных местоположениях. Чтобы переместить базу данных, используйте параметр MOVE для перемещения каждого из файлов базы данных и предотвращения конфликтов с существующими файлами.

    Базовый синтаксис Transact-SQL для восстановления базы данных в новое расположение и присвоения нового имени:

    RESTORE DATABASE new_database_name

    FROM backup_device [ ,...n ]

    [ С

    {

    [ RECOVERY | NORECOVERY ]

    [ , ] [ FILE ={ backup_set_file_number | @backup_set_file_number } ]

    [ , ] ПЕРЕМЕСТИТЬ "logical_file_name_in_backup" В "operating_system_file_name" [ ,... n ]

    }

    ;

    Замечание

    При подготовке к перемещению базы данных на другой диск необходимо проверить наличие достаточного места и определить потенциальные конфликты с существующими файлами. Это включает использование инструкции RESTORE VERIFYONLY , указывающей те же параметры MOVE, которые планируется использовать в инструкции RESTORE DATABASE.

    В следующей таблице аргументы инструкции RESTORE описаны применительно к восстановлению базы данных в новом месте. Дополнительные сведения об этих аргументах см. в разделе RESTORE (Transact-SQL).

    новое_имя_базы_данных
    Новое имя базы данных.

    Замечание

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

    backup_device [ ,... n ]
    Указывает список с разделителями-запятыми от 1 до 64 устройств резервного копирования, используемых для восстановления базы данных из резервной копии. Можно указать как физическое устройство резервного копирования, так и соответствующее логическое устройство, если оно определено. Для указания физического устройства резервного копирования используйте параметр DISK или TAPE.

    { DISK | TAPE } =имя_физического_устройства_резервного_копирования

    Дополнительные сведения см. в разделе Устройства резервного копирования (SQL Server).

    { RECOVERY | NORECOVERY }
    Если в базе данных используется модель полного восстановления, может возникнуть необходимость применить резервные копии журналов транзакций после восстановления базы данных. В этом случае укажите параметр NORECOVERY.

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

    FILE = { номер_файла_резервного_набора | @номер_файла_резервного_набора }
    Идентифицирует резервный набор данных для восстановления. Например, аргумент номер_файла_резервного_набора , равный 1 , указывает первый резервный набор данных на носителе данных резервных копий, а аргумент номер_файла_резервного_набора , равный 2 , указывает второй резервный набор данных. Значение номер_файла_резервного_набора резервного набора данных можно получить с помощью инструкции RESTORE HEADERONLY .

    Если этот параметр не указан, по умолчанию используется первый резервный набор на устройстве резервного копирования.

    Дополнительные сведения см. в разделе "Указание резервного набора данных" в аргументах RESTORE (Transact-SQL).

    ПЕРЕМЕСТИТЬ 'logical_file_name_in_backup' В 'operating_system_file_name' [ ,... n ]
    Показывает, что файл данных или журнала, указанный параметром логическое_имя_файла_в_резервной_копии , следует восстановить из копии в месте, указанном параметром имя_файла_в_операционной_системе. Укажите инструкцию MOVE для каждого логического файла, который надо восстановить из резервного набора данных в новом месте.

    Вариант Описание
    логическое_имя_файла_в_резервной_копии Указывает логическое имя файла данных или журнала в резервном наборе данных. Логическое имя файла данных или журнала в резервном наборе данных соответствует его логическому имени в базе данных на момент создания резервного набора данных.

    Примечание. Получить список логических файлов из резервного набора данных можно с помощью команды RESTORE FILELISTONLY.
    имя_файла_в_операционной_системе Задает новое место для файла, указанного параметром логическое_имя_файла_в_резервной_копии. Файл будет восстановлен в этом месте.

    Параметр имя_файла_в_операционной_системе может также указать новое имя для восстановленного файла. Это необходимо, если вы создаете копию существующей базы данных на том же экземпляре сервера.
    n Заполнитель, указывающий, что вы можете добавить дополнительные инструкции MOVE.

Пример (Transact-SQL)

В этом примере создается новая база данных с именем MyAdvWorks путем восстановления резервной копии примера базы данных AdventureWorks2012, которая включает два файла: AdventureWorks2012_Data и AdventureWorks2012_Log. В этой базе данных используется простая модель восстановления. База данных AdventureWorks2012 уже существует на экземпляре сервера, поэтому файлы в резервной копии должны быть восстановлены в новом расположении. Количество и имена восстанавливаемых файлов базы данных можно определить с помощью инструкции RESTORE FILELISTONLY. Резервная копия базы данных является первым резервным набором данных на устройстве резервного копирования.

Замечание

Примеры резервного копирования и восстановления журнала транзакций, включая восстановление на определенный момент времени, используют базу данных MyAdvWorks_FullRM, созданную из AdventureWorks2012, как показано в следующем примере MyAdvWorks. Однако результирующая MyAdvWorks_FullRM база данных должна быть изменена, чтобы использовать полную модель восстановления с помощью следующей инструкции Transact-SQL: ALTER DATABASE <database_name> SET RECOVERY FULL.

USE master;  
GO  
-- First determine the number and names of the files in the backup.  
-- AdventureWorks2012_Backup is the name of the backup device.  
RESTORE FILELISTONLY  
   FROM AdventureWorks2012_Backup;  
-- Restore the files for MyAdvWorks.  
RESTORE DATABASE MyAdvWorks  
   FROM AdventureWorks2012_Backup  
   WITH RECOVERY,  
   MOVE 'AdventureWorks2012_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',   
   MOVE 'AdventureWorks2012_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';  
GO  
  

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

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

См. также

Управление метаданными при создании базы данных в другом экземпляре сервера (SQL Server)
RESTORE (Transact-SQL)
Копирование баз данных путем создания и восстановления резервных копий