Восстановление базы данных в новое место (SQL Server)Restore a Database to a New Location (SQL Server)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В этом разделе описано, как восстановить базу данных SQL ServerSQL Server в новую папку и при необходимости переименовать ее в SQL Server 2017SQL Server 2017 с помощью SQL Server Management Studio (SSMS) или Transact-SQLTransact-SQL.This topic describes how to restore a SQL ServerSQL Server database to a new location, and optionally rename the database, in SQL Server 2017SQL Server 2017 by using SQL Server Management Studio(SSMS) or Transact-SQLTransact-SQL. Эта процедура позволяет переместить базу данных по новому пути каталога или создать копию базы данных на том же или другом экземпляре сервера.You can move a database to a new directory path or create a copy of a database on either the same server instance or a different server instance.

Перед началом работыBefore you begin!

ОграниченияLimitations and restrictions

  • При восстановлении базы данных из полной резервной копии системный администратор должен быть единственным пользователем, работающим с базой данных.The system administrator restoring a full database backup must be the only person currently using the database to be restored.

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

  • Модель восстановления с полным резервным копированием или с неполным протоколированием регламентирует, что перед восстановлением базы данных необходимо создать резервную копию активного журнала транзакций.Under the full or bulk-logged recovery model, before you can restore a database, you must back up the active transaction log. Дополнительные сведения см. в статье Создание резервной копии журнала транзакций (SQL Server)).For more information, see Back Up a Transaction Log (SQL Server).

  • Чтобы восстановить зашифрованную базу данных, требуется доступ к сертификату или асимметричному ключу, использовавшемуся для шифрования этой базы данных.To restore an encrypted database, you must have access to the certificate or asymmetric key used to encrypt the database! Без сертификата или асимметричного ключа восстановить базу данных невозможно.Without that certificate or asymmetric key, you cannot restore the database. Необходимо сохранять сертификат, используемый для шифрования ключа шифрования базы данных, пока существует потребность в резервной копии.You must retain that certificate used to encrypt the database encryption key for as long as you need the backup! Дополнительные сведения см. в статье SQL Server Certificates and Asymmetric Keys.For more information, see SQL Server Certificates and Asymmetric Keys.

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

  • Дополнительные сведения о перемещении базы данных см. в разделе Копирование баз данных путем создания и восстановления резервных копий.For additional considerations for moving a database, see Copy Databases with Backup and Restore.

  • После восстановления базы данных SQL Server 2005 (9.x)SQL Server 2005 (9.x) или более поздней версии в SQL Server 2017SQL Server 2017база данных автоматически обновляется.If you restore a SQL Server 2005 (9.x)SQL Server 2005 (9.x) or higher database to SQL Server 2017SQL Server 2017, the database is automatically upgraded. Как правило, база данных сразу становится доступной.Typically, the database becomes available immediately. Но если база данных SQL Server 2005 (9.x)SQL Server 2005 (9.x) содержит полнотекстовые индексы, при обновлении будет произведен их импорт, сброс или повторное создание в зависимости от установленного значения свойства сервера upgrade_option .However, if a SQL Server 2005 (9.x)SQL Server 2005 (9.x) database has full-text indexes, the upgrade process either imports, resets, or rebuilds them, depending on the setting of the upgrade_option server property. Если при обновлении выбран режим импорта (upgrade_option = 2) или перестроения (upgrade_option = 0), полнотекстовые индексы во время обновления будут недоступны.If the upgrade option is set to import (upgrade_option = 2) or rebuild (upgrade_option = 0), the full-text indexes will be unavailable during the upgrade. В зависимости от объема индексируемых данных процесс импорта может занять несколько часов, а перестроение — в несколько (до десяти) раз больше.Depending the amount of data being indexed, importing can take several hours, and rebuilding can take up to ten times longer. Обратите внимание, что если для обновления выбран режим «Импортировать», а полнотекстовый каталог недоступен, то связанные с ним полнотекстовые индексы будут перестроены.Note also that when the upgrade option is set to import, the associated full-text indexes are rebuilt if a full-text catalog is not available. Чтобы изменить значение свойства сервера upgrade_option , следует использовать процедуру sp_fulltext_service.To change the setting of the upgrade_option server property, use sp_fulltext_service.

безопасностьSecurity

В целях безопасности рекомендуется не присоединять и не восстанавливать базы данных, полученные из неизвестных или ненадежных источников.For security purposes, we recommend that you do not attach or restore databases from unknown or untrusted sources. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQLTransact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database.

PermissionsPermissions

Если восстанавливаемая база данных не существуют, для выполнения инструкции RESTORE у пользователя должны быть разрешения CREATE DATABASE.If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute RESTORE. Если база данных существует, разрешения на выполнение инструкции RESTORE по умолчанию предоставлены членам предопределенных ролей сервера sysadmin и dbcreator , а также владельцу базы данных (dbo).If the database exists, RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database.

Разрешения на выполнение инструкции RESTORE даются ролям, в которых данные о членстве всегда доступны серверу.RESTORE permissions are given to roles in which membership information is always readily available to the server. Так как членство в предопределенной роли базы данных может быть проверено только тогда, когда база данных доступна и не повреждена, что не всегда имеет место при выполнении инструкции RESTORE, члены предопределенной роли базы данных db_owner не имеют разрешений RESTORE.Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.

Восстановление базы данных в новую папку и при необходимости ее переименование с помощью SSMSRestore a database to a new location; optionally rename the database using SSMS

  1. После подключения к соответствующему экземпляру компонента Компонент SQL Server Database EngineSQL Server Database Engineв обозревателе объектов разверните дерево сервера, щелкнув имя сервера.Connect to the appropriate instance of the Компонент SQL Server Database EngineSQL Server Database Engine, and then in Object Explorer, click the server name to expand the server tree.

  2. Щелкните правой кнопкой мыши элемент Базы данных, а затем выберите пункт Восстановить базу данных.Right-click Databases, and then click Restore Database. Откроется диалоговое окно Восстановление базы данных .The Restore Database dialog box opens.

  3. Чтобы указать источник и расположение восстанавливаемых резервных наборов данных, используйте страницу Общие , раздел Источник .On the General page, use the Source section to specify the source and location of the backup sets to restore. Выберите один из следующих вариантов.Select one of the following options:

    • База данныхDatabase

      Выберите из раскрывающегося списка базу данных для восстановления.Select the database to restore from the drop-down list. Данный список содержит только базы данных, резервное копирование которых было выполнено в соответствии с журналом резервного копирования msdb .The list contains only databases that have been backed up according to the msdb backup history.

    ПРИМЕЧАНИЕ. Если резервная копия была получена с другого сервера, на целевом сервере не будет журнала резервного копирования для указанной базы данных.NOTE: If the backup is taken from a different server, the destination server will not have the backup history information for the specified database. В этом случае щелкните пункт Устройство , чтобы вручную указать файл или устройство для восстановления.In this case, select Device to manually specify the file or device to restore.

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

      Нажмите кнопку обзора ( ... ), после чего откроется диалоговое окно Выбор устройств резервного копирования .Click the browse (...) button to open the Select backup devices dialog box. В окне Тип носителя резервной копии выберите один из перечисленных типов устройств.In the Backup media type box, select one of the listed device types. Чтобы выбрать одно или несколько устройств в окне Носитель резервной копии , нажмите кнопку Добавить.To select one or more devices for the Backup media box, click Add.

      После добавления нужных устройств в списке Носитель резервной копии нажмите кнопку ОК для возвращения на страницу Общие .After you add the devices you want to the Backup media list box, click OK to return to the General page.

      В списке Источник: Устройство: База данных выберите имя базы данных, из которой нужно восстановить резервные копии.In the Source: Device: Database list box, select the name of the database which should be restored.

      Примечание. Этот список доступен, только если выбрано Устройство .Note This list is only available when Device is selected. Будут выбраны только те базы данных, резервные копии которых доступны на выбранном устройстве.Only databases that have backups on the selected device will be available.

  4. В разделе Назначение , в поле База данных автоматически появится имя базы данных для восстановления.In the Destination section, the Database box is automatically populated with the name of the database to be restored. Для изменения имени базы данных введите новое имя в окно База данных .To change the name of the database, enter the new name in the Database box.

  5. В поле Восстановить до оставьте значение по умолчанию До последней выбранной резервной копии или щелкните Временную шкалу , чтобы перейти в диалоговое окно Временная шкала резервной копии и выбрать вручную конкретное пороговое время восстановления.In the Restore to box, leave the default as To the last backup taken or click on Timeline to access the Backup Timeline dialog box to manually select a point in time to stop the recovery action. Дополнительные сведения об указании конкретного момента времени см. в разделе Backup Timeline .See Backup Timeline for more information on designating a specific point in time.

  6. В сетке Резервные наборы данных для восстановления выберите нужные резервные наборы.In the Backup sets to restore grid, select the backups to restore. В этой сетке отображаются резервные копии, доступные в указанном месте.This grid displays the backups available for the specified location. По умолчанию предлагается план восстановления.By default, a recovery plan is suggested. Чтобы переопределить предложенный план восстановления, можно изменить выбранные элементы в сетке.To override the suggested recovery plan, you can change the selections in the grid. Выбор всех резервных копий, которые зависят от восстановления более ранних копий, отменяется автоматически, как только отменяется выбор более ранних копий.Backups that depend on the restoration of an earlier backup are automatically deselected when the earlier backup is deselected.

    Дополнительные сведения о столбцах сетки Восстанавливаемые резервные наборы данных см. в разделе Восстановление базы данных (страница "Общие").For information about the columns in the Backup sets to restore grid, see Restore Database (General Page).

  7. Чтобы указать новое расположение для файлов баз данных, выберите страницу Файлы , а затем нажмите кнопку Переместить все файлы в папку.To specify the new location of the database files, select the Files page, and then click Relocate all files to folder. Предоставьте новое расположение для папки файла данных и папки файла журнала.Provide a new location for the Data file folder and Log file folder. Дополнительные сведения об этой сетке см. в разделе Восстановление базы данных (страница "Файлы").For more information about this grid, see Restore Database (Files Page).

  8. На странице Параметры настройте параметры, если в этом есть необходимость.On the Options page, adjust the options if you want. Дополнительные сведения об этих параметрах см. в статье Восстановление базы данных (страница "Параметры").For more information about these options, see Restore Database (Options Page).

Восстановление базы данных в новую папку и при необходимости ее переименование с помощью T-SQLRestore database to a new location; optionally rename the database using T-SQL

  1. При необходимости определите логическое и физическое имена файлов в резервном наборе, содержащем полную резервную копию базы данных, которую нужно восстановить.Optionally, determine the logical and physical names of the files in the backup set that contains the full database backup that you want to restore. Эта инструкция возвращает список файлов базы данных и журнала, содержащихся в резервном наборе данных.This statement returns a list of the database and log files contained in the backup set. Базовый синтаксис:The basic syntax is as follows:

    RESTORE FILELISTONLY FROM <устройство_резервного_копирования> WITH FILE = номер_файла_резервного_набораRESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number

    В этом случае аргумент номер_файла_резервного_набора указывает позицию резервной копии в наборе носителей.Here, backup_set_file_number indicates the position of the backup in the media set. Положение резервного набора можно получить с помощью инструкции RESTORE HEADERONLY .You can obtain the position of a backup set by using the RESTORE HEADERONLY statement. Дополнительные сведения см. в подразделе "Указание резервного набора данных" раздела Аргументы инструкции RESTORE (Transact-SQL).For more information, see "Specifying a Backup Set" in RESTORE Arguments (Transact-SQL).

    Эта инструкция также поддерживает некоторые параметры WITH.This statement also supports a number of WITH options. Дополнительные сведения см. в разделе Инструкция RESTORE FILELISTONLY (Transact-SQL).For more information, see RESTORE FILELISTONLY (Transact-SQL).

  2. Используйте инструкцию RESTORE DATABASE для восстановления полной резервной копии базы данных.Use the RESTORE DATABASE statement to restore the full database backup. По умолчанию файлы данных и журналов восстанавливаются в исходных местоположениях.By default, data and log files are restored to their original locations. При перемещении базы данных используйте параметр MOVE, чтобы переместить каждый файл базы данных и избежать конфликтов с существующими файлами.To relocate a database, use the MOVE option to relocate each of the database files and to avoid collisions with existing files.

Базовый синтаксис Transact-SQLTransact-SQL для восстановления базы данных в новом месте и с новым именем:The basic Transact-SQLTransact-SQL syntax for restoring the database to a new location and a new name is:

RESTORE DATABASE новое_имя_базы_данныхRESTORE DATABASE new_database_name

FROM устройство_резервного_копирования [ ,...n ]FROM backup_device [ ,...n ]

[ WITH[ WITH

{{

[ RECOVERY | NORECOVERY ][ RECOVERY | NORECOVERY ]

[ , ] [ FILE ={ номер_файла_резервного_набора | @номер_файла_резервного_набора } ][ , ] [ FILE ={ backup_set_file_number | @backup_set_file_number } ]

[ , ] MOVE 'логическое_имя_файла_в_резервной_копии' TO 'имя_файла_в_операционной_системе' [ ,...n ][ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]

}}

;;

Примечание

При подготовке к перемещению базы данных на другой диск необходимо проверить наличие достаточного места и определить потенциальные конфликты с существующими файлами.When preparing to relocate a database on a different disk, you should verify that sufficient space is available and identify any potential collisions with existing files. Это включает использование инструкции RESTORE VERIFYONLY , указывающей те же параметры MOVE, которые планируется использовать в инструкции RESTORE DATABASE.This involves using a RESTORE VERIFYONLY statement that specifies the same MOVE parameters that you plan to use in your RESTORE DATABASE statement.

В следующей таблице аргументы инструкции RESTORE описаны применительно к восстановлению базы данных в новом месте.The following table describes arguments of this RESTORE statement in terms of restoring a database to a new location. Дополнительные сведения об этих аргументах см. в разделе RESTORE (Transact-SQL).For more information about these arguments, see RESTORE (Transact-SQL).

новое_имя_базы_данныхnew_database_name
Новое имя базы данных.The new name for the database.

Примечание

При восстановлении базы данных на другом экземпляре сервера можно указать исходное имя базы данных вместо нового.If you are restoring the database to a different server instance, you can use the original database name instead of a new name.

устройство_резервного_копирования [ , ...n ]backup_device [ ,...n ]
Указывает список с разделителями-запятыми от 1 до 64 устройств резервного копирования, используемых для восстановления базы данных из резервной копии.Specifies a comma-separated list of from 1 to 64 backup devices from which the database backup is to be restored. Можно указать как физическое устройство резервного копирования, так и соответствующее логическое устройство, если оно определено.You can specify a physical backup device, or you can specify a corresponding logical backup device, if defined. Для указания физического устройства резервного копирования используйте параметр DISK или TAPE.To specify a physical backup device, use the DISK or TAPE option:

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

Дополнительные сведения см. в разделе Устройства резервного копирования (SQL Server).For more information, see Backup Devices (SQL Server).

{ RECOVERY | NORECOVERY }{ RECOVERY | NORECOVERY }
Если в базе данных используется модель полного восстановления, может возникнуть необходимость применить резервные копии журналов транзакций после восстановления базы данных.If the database uses the full recovery model, you might need to apply transaction log backups after you restore the database. В этом случае укажите параметр NORECOVERY.In this case, specify the NORECOVERY option.

В противном случае используйте параметр RECOVERY, который применяется по умолчанию.Otherwise, use the RECOVERY option, which is the default.

FILE ={ номер_файла_резервного_набора | @номер_файла_резервного_набора }FILE = { backup_set_file_number | @backup_set_file_number }
Идентифицирует резервный набор данных для восстановления.Identifies the backup set to be restored. Например, аргумент номер_файла_резервного_набора , равный 1 , указывает первый резервный набор данных на носителе данных резервных копий, а аргумент номер_файла_резервного_набора , равный 2 , указывает второй резервный набор данных.For example, a backup_set_file_number of 1 indicates the first backup set on the backup medium and a backup_set_file_number of 2 indicates the second backup set. Значение номер_файла_резервного_набора резервного набора данных можно получить с помощью инструкции RESTORE HEADERONLY .You can obtain the backup_set_file_number of a backup set by using the RESTORE HEADERONLY statement.

Если этот параметр не указан, по умолчанию используется первый резервный набор на устройстве резервного копирования.When this option is not specified, the default is to use the first backup set on the backup device.

Дополнительные сведения см. в подразделе "Указание резервного набора данных" раздела Аргументы инструкции RESTORE (Transact-SQL).For more information, see "Specifying a Backup Set," in RESTORE Arguments (Transact-SQL).

MOVE ' логическое_имя_файла_в_резервной_копии ' TO ' имя_файла_в_операционной_системе ' [ , ...n ]MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
Показывает, что файл данных или журнала, указанный параметром логическое_имя_файла_в_резервной_копии , следует восстановить из копии в месте, указанном параметром имя_файла_в_операционной_системе.Specifies that the data or log file specified by logical_file_name_in_backup is to be restored to the location specified by operating_system_file_name. Укажите инструкцию MOVE для каждого логического файла, который надо восстановить из резервного набора данных в новом месте.Specify a MOVE statement for every logical file you want to restore from the backup set to a new location.

ПараметрOption ОписаниеDescription
логическое_имя_файла_в_резервной_копииlogical_file_name_in_backup Указывает логическое имя файла данных или журнала в резервном наборе данных.Specifies the logical name of a data or log file in the backup set. Логическое имя файла данных или журнала в резервном наборе данных соответствует его логическому имени в базе данных на момент создания резервного набора данных.The logical file name of a data or log file in a backup set matches its logical name in the database when the backup set was created.



Примечание. Для получения списка логических файлов из набора резервных данных следует использовать инструкцию RESTORE FILELISTONLY.Note: To obtain a list of the logical files from the backup set, use RESTORE FILELISTONLY.
имя_файла_в_операционной_системеoperating_system_file_name Задает новое место для файла, указанного параметром логическое_имя_файла_в_резервной_копии.Specifies a new location for the file specified by logical_file_name_in_backup. Файл будет восстановлен в этом месте.The file will be restored to this location.

Параметр имя_файла_в_операционной_системе может также указать новое имя для восстановленного файла.Optionally, operating_system_file_name specifies a new file name for the restored file. Это необходимо, если создается копия существующей базы данных на том же экземпляре сервера.This is necessary if you are creating a copy of an existing database on the same server instance.
nn Заполнитель, который показывает, что можно указать дополнительные инструкции MOVE.Is a placeholder indicating that you can specify additional MOVE statements.

Примеры (Transact-SQL)Example (Transact-SQL)

В приведенном ниже примере создается база данных MyAdvWorks посредством восстановления резервной копии образца базы данных AdventureWorks2012AdventureWorks2012 , в которой содержатся два файла: AdventureWorks2012AdventureWorks2012_Data и AdventureWorks2012AdventureWorks2012_Log.This example creates a new database named MyAdvWorks by restoring a backup of the AdventureWorks2012AdventureWorks2012 sample database, which includes two files: AdventureWorks2012AdventureWorks2012_Data and AdventureWorks2012AdventureWorks2012_Log. В этой базе данных используется простая модель восстановления.This database uses the simple recovery model. База данных AdventureWorks2012AdventureWorks2012 уже существует на экземпляре сервера, поэтому файлы в резервной копии должны быть восстановлены в новом месте.The AdventureWorks2012AdventureWorks2012 database already exists on the server instance, so the files in the backup must be restored to a new location. Количество и имена восстанавливаемых файлов базы данных можно определить с помощью инструкции RESTORE FILELISTONLY.The RESTORE FILELISTONLY statement is used to determine the number and names of the files in the database being restored. Резервная копия базы данных является первым резервным набором данных на устройстве резервного копирования.The database backup is the first backup set on the backup device.

ПРИМЕЧАНИЕ. В примерах резервного копирования и восстановления журнала транзакций из резервной копии, включая восстановление на момент времени, используется база данных MyAdvWorks_FullRM, которая создается из базы данных AdventureWorks2012AdventureWorks2012, как в следующем примере с базой данных MyAdvWorks.NOTE: The examples of backing up and restoring the transaction log, including point-in-time restores, use the MyAdvWorks_FullRM database that is created from AdventureWorks2012AdventureWorks2012 just like the following MyAdvWorks example. Однако полученную базу данных MyAdvWorks_FullRM необходимо изменить для использования модели полного восстановления с помощью следующей инструкции Transact-SQLTransact-SQL: ALTER DATABASE <имя_базы_данных> SET RECOVERY FULL.However, the resulting MyAdvWorks_FullRM database must be changed to use the full recovery model by using the following Transact-SQLTransact-SQL statement: 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  
  

Пример создания полной резервной копии базы данных AdventureWorks2012AdventureWorks2012 см. в разделе Создание полной резервной копии базы данных (SQL Server).For an example of how to create a full database backup of the AdventureWorks2012AdventureWorks2012 database, see Create a Full Database Backup (SQL Server).

Related tasksRelated tasks

См. также разделSee also

Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера (SQL Server) Manage Metadata When Making a Database Available on Another Server Instance (SQL Server)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Копирование баз данных путем создания и восстановления резервных копийCopy Databases with Backup and Restore