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


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

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

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

Ограничения

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

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

  • При использовании полной или массовой модели восстановления перед восстановлением базы данных необходимо создать резервную копию активного журнала транзакций. Дополнительные сведения см. в статье "Резервное копирование журнала транзакций".

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

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

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

  • При восстановлении базы данных 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. В поле "Восстановление " оставьте значение по умолчанию для последней резервной копии или выберите временную шкалу для доступа к диалоговому окну временной шкалы резервного копирования , чтобы вручную выбрать точку во времени, чтобы остановить действие восстановления. Дополнительные сведения о назначении определенной точки во времени см. на временной шкале резервного копирования .

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

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

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

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

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

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

    RESTORE FILELISTONLY FROM backup_device WITH FILE = *backup_set_file_number
    

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

    Эта инструкция также поддерживает несколько WITH вариантов. Дополнительные сведения см. в разделе RESTORE FILELISTONLY.

  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.

new_database_name

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

Примечание.

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

backup_device [ , ... n ]

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

{ ДИСК | TAPE } = physical_backup_device_name

Дополнительные сведения см. в разделе "Резервное копирование устройств".

{ RECOVERY | NORECOVERY }

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

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

FILE = { backup_set_file_number | @backup_set_file_number }

Идентифицирует резервный набор данных для восстановления. Например, backup_set_file_number1 указывает первый резервный набор на носителе резервного копирования, а backup_set_file_number2 указывает второй резервный набор. Вы можете получить backup_set_file_number резервного набора с помощью инструкций RESTORE — HEADERONLY .

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

Дополнительные сведения см. в разделе restore arguments (Transact-SQL).

ПЕРЕМЕСТИТЬ "logical_file_name_in_backup" В "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 путем восстановления резервной AdventureWorks2025 копии образца базы данных, включающей два файла: AdventureWorks2025_Data и AdventureWorks2025_Log. В этой базе данных используется простая модель восстановления. База данных AdventureWorks2025 уже существует на экземпляре сервера, поэтому файлы в резервной копии должны быть восстановлены в новом месте. Инструкция RESTORE FILELISTONLY используется для определения количества и имен файлов в восстанавливаемой базе данных. Резервная копия базы данных является первым резервным набором данных на устройстве резервного копирования.

Примечание.

Примеры резервного копирования и восстановления журнала транзакций, включая восстановление на определенный момент времени, используйте MyAdvWorks_FullRM базу данных, созданную из AdventureWorks2025следующего 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

Пример создания полной резервной копии базы данных см. в статье AdventureWorks2025 копии базы данных".