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

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

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

  • Перед началом работы выполните следующие действия.

    Ограничения

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

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

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

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

    Среда SQL Server Management Studio

    Transact-SQL

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

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

Ограничения

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

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

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

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

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

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

  • После восстановления базы данных SQL Server 2005 или SQL Server 2008 в SQL Server 2012 база данных автоматически обновляется. Как правило, база данных сразу становится доступной. Однако если база данных 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.

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

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

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

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

    • База данных

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

    ПримечаниеПримечание

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

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

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

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

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

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

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

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

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

    Дополнительные сведения о столбцах в сетке Резервные наборы данных для восстановления см. в разделе Восстановление базы данных (страница «Общие»).

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

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

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

    RESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number

    В данном случае аргумент 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 ]

    [ WITH

       {

            [ RECOVERY | NORECOVERY ]

       [ , ] [ FILE ={ backup_set_file_number | @backup\_set\_file\_number } ]

       [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]

       }

    ;

    ПримечаниеПримечание

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

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

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

      ПримечаниеПримечание

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

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

      { DISK | TAPE } = physical_backup_device_name

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

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

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

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

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

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

    • MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
      Показывает, что файл данных или журнала, указанный параметром logical_file_name_in_backup, следует восстановить из копии в месте, указанном параметром operating_system_file_name. Укажите инструкцию MOVE для каждого логического файла, который надо восстановить из резервного набора данных в новом месте.

      Параметр

      Описание

      logical_file_name_in_backup

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

      ПримечаниеПримечание

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

      operating_system_file_name

      Задает новое место для файла, указанного параметром logical_file_name_in_backup. Файл будет восстановлен в этом месте.

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

      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).

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

См. также

Справочник

RESTORE (Transact-SQL)

Основные понятия

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

Копирование баз данных путем создания и восстановления резервных копий