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


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

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

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

Подготовка к работе

ограничения

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

Необходимые компоненты

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

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

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

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

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

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

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

Разрешения

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

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

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

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

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

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

    • База данных

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

    Примечание.

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

    • Устройство

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

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

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

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

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

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

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

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

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

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

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

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

    RESTORE FILELISTONLY FROM <BACKUP_DEVICE> WITH FILE = BACKUP_SET_FILE_NUMBER

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

    Эта инструкция также поддерживает несколько вариантов 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).

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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



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

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

Пример (Transact-SQL)

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

Примечание.

В примерах резервного копирования и восстановления журнала транзакций из резервной копии, включая восстановление на момент времени, используется база данных MyAdvWorks_FullRM, которая создается из базы данных AdventureWorks2022, как в следующем примере с базой данных 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.  
-- AdventureWorks2022_Backup is the name of the backup device.  
RESTORE FILELISTONLY  
   FROM AdventureWorks2022_Backup;  
-- Restore the files for MyAdvWorks.  
RESTORE DATABASE MyAdvWorks  
   FROM AdventureWorks2022_Backup  
   WITH RECOVERY,  
   MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',   
   MOVE 'AdventureWorks2022_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';  
GO  
  

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

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

См. также