データベースを新しい場所に復元する (SQL Server)Restore a Database to a New Location (SQL Server)

このトピックでは、 SQL ServerSQL Server または SQL Server 2014SQL Server 2014 を使用して、 [SQL Server Management Studio]SQL Server Management StudioTransact-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 2014SQL Server 2014 by using [SQL Server Management Studio]SQL Server Management Studio 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.

このトピックの内容In This Topic

作業を開始する準備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).

推奨事項Recommendations

  • 暗号化されたデータベースを復元するには、データベースの暗号化に使用された証明書または非対称キーにアクセスできることが必要です。To restore a database that is encrypted, you must have access to the certificate or asymmetric key that was used to encrypt the database. 証明書または非対称キーがないと、データベースは復元できません。Without the certificate or asymmetric key, the database cannot be restored. このため、バックアップが必要である間は、データベース暗号化キーの暗号化に使用する証明書を保持しておく必要があります。As a result, the certificate that is used to encrypt the database encryption key must be retained as long as the backup is needed. 詳細については、「 SQL Server Certificates and Asymmetric Keys」を参照してください。For more information, see SQL Server Certificates and Asymmetric Keys.

  • データベースの移行に関するその他の考慮事項については、「バックアップと復元によるデータベースのコピー」を参照してください。For information about additional considerations for moving a database, see Copy Databases with Backup and Restore.

  • SQL Server 2005SQL Server 2005 以降のデータベースを SQL Server 2014SQL Server 2014 に復元すると、データベースが自動的にアップグレードされます。If you restore a SQL Server 2005SQL Server 2005 or higher database to SQL Server 2014SQL Server 2014, the database is automatically upgraded. 通常、データベースは直ちに使用可能になります。Typically, the database becomes available immediately. ただし、 SQL Server 2005SQL Server 2005 データベースにフルテキスト インデックスがある場合、アップグレード プロセスでは、 upgrade_option サーバー プロパティの設定に応じて、インポート、リセット、または再構築が行われます。However, if a SQL Server 2005SQL Server 2005 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. インデックスを作成するデータ量によって、インポートには数時間、再構築には最大でその 10 倍の時間がかかることがあります。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.

SQL Server Management Studio の使用Using SQL Server Management Studio

新しい場所にデータベースを復元し、必要に応じて名前を変更するにはTo restore a database to a new location, and optionally rename the database

  1. 適切な SQL Server データベース エンジンSQL Server Database Engineのインスタンスに接続した後、オブジェクト エクスプローラーでサーバー名をクリックしてサーバー ツリーを展開します。Connect to the appropriate instance of the SQL Server データベース エンジンSQL 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. 以下のオプションの 1 つを選択します。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.

    注意

    別のサーバーで作成されたバックアップの場合、復元先のサーバーには指定されたデータベースのバックアップ履歴情報が存在しません。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. [バックアップ メディアの種類] ボックスから、デバイスの種類を 1 つ選択します。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.

      [バックアップ メディア] ボックスに目的のデバイスを追加したら、 [OK] をクリックして、 [全般] ページに戻ります。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).

Transact-SQL の使用Using Transact-SQL

新しい場所にデータベースを復元し、必要に応じて名前を変更するにはTo restore a database to a new location, and optionally rename the database

  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 <backup_device> WITH FILE = backup_set_file_numberRESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number

    この 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 new_database_nameRESTORE DATABASE new_database_name

    FROM backup_device [ ,...n ]FROM backup_device [ ,...n ]

    [ WITH[ WITH

    {{

    [ RECOVERY | NORECOVERY ][ RECOVERY | NORECOVERY ]

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

    [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...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 ステートメントを使用して、RESTORE DATABASE ステートメントで使用するのと同じ MOVE パラメーターを指定する必要があります。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_namenew_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.

    backup_device [ ,...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 } =physical_backup_device_name{ 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 = { backup_set_file_number | @backup_set_file_number }FILE = { backup_set_file_number | @backup_set_file_number }
    復元するバックアップ セットを特定します。Identifies the backup set to be restored. たとえば、 1backup_set_file_number は、バックアップ 目での最初のバックアップ セットを示し、2 の backup_set_file_number2 番目のバックアップ セットを示します。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. バックアップ セットの backup_set_file_number を取得するには、 RESTORE HEADERONLY ステートメントを使用します。You can obtain the backup_set_file_number of a backup set by using the RESTORE HEADERONLY statement.

    このオプションを指定しない場合、既定ではバックアップ デバイスの 1 番目のバックアップ セットを使用します。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 ' logical_file_name_in_backup ' TO ' operating_system_file_name ' [ ,...n ]MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
    logical_file_name_in_backup で指定されるデータまたはログ ファイルが、 operating_system_file_nameで指定される位置に復元されることを指定します。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 DescriptionDescription
    logical_file_name_in_backuplogical_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_nameoperating_system_file_name logical_file_name_in_backupで指定したファイルの新しい場所を指定します。Specifies a new location for the file specified by logical_file_name_in_backup. ファイルはこの場所に復元されます。The file will be restored to this location.

    必要に応じて、 operating_system_file_name に復元するファイルの新しいファイル名を指定します。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 という名前の新しいデータベースを作成します。このデータベースには、2 つのファイル、 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. データベース バックアップは、バックアップ デバイスの 1 番目のバックアップ セットです。The database backup is the first backup set on the backup device.

注意

特定日時への復元を含む、トランザクション ログのバックアップと復元の例では、次の MyAdvWorks_FullRM の例と同様、AdventureWorks2012AdventureWorks2012 から作成した MyAdvWorks データベースを使用します。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 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