次の方法で共有


データベースを新しい場所に復元する (SQL Server)

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して SQL Server 2014 で SQL Server データベースを新しい場所に復元し、必要に応じてデータベースの名前を変更する方法について説明します。 データベースを新しいディレクトリ パスに移動したり、同じサーバー インスタンスまたは別のサーバー インスタンスにデータベースのコピーを作成したりできます。

このトピックについて

開始する前に

制限事項と制約条件

  • データベースの完全バックアップを復元するシステム管理者は、復元するデータベースを現在使用している唯一のユーザーである必要があります。

[前提条件]

推奨事項

  • 暗号化されたデータベースを復元するには、データベースの暗号化に使用された証明書または非対称キーにアクセスできる必要があります。 証明書または非対称キーがないと、データベースを復元できません。 その結果、バックアップが必要な限り、データベース暗号化キーの暗号化に使用される証明書を保持する必要があります。 詳細については、「 SQL Server Certificates and Asymmetric Keys」をご覧ください。

  • データベースの移動に関するその他の考慮事項については、「 バックアップと復元を使用したデータベースのコピー」を参照してください。

  • SQL Server 2005 以降のデータベースを SQL Server 2014 に復元すると、データベースは自動的にアップグレードされます。 通常、データベースはすぐに使用できるようになります。 ただし、SQL Server 2005 データベースにフルテキスト インデックスがある場合、アップグレード プロセスでは、 upgrade_option サーバー プロパティの設定に応じて、それらをインポート、リセット、または再構築します。 アップグレード オプションがインポート (upgrade_option = 2) または再構築 (upgrade_option = 0) に設定されている場合、アップグレード中にフルテキスト インデックスを使用できなくなります。 インデックスを作成するデータの量によっては、インポートに数時間かかる場合があり、再構築には最大で 10 倍かかる場合があります。 また、アップグレード オプションをインポートするように設定すると、フルテキスト カタログが使用できない場合は、関連付けられているフルテキスト インデックスが再構築されることに注意してください。 upgrade_option サーバー プロパティの設定を変更するには、sp_fulltext_serviceを使用します。

安全

セキュリティ上の理由から、不明なソースまたは信頼されていないソースからデータベースをアタッチまたは復元しないことをお勧めします。 こうしたデータベースには、意図しない Transact-SQL コードを実行したり、スキーマまたは物理データベース構造を変更してエラーを発生させるような、悪意のあるコードが含まれている可能性があります。 不明なソースまたは信頼されていないソースのデータベースを使用する前に、非運用サーバー上のデータベースで DBCC CHECKDB を実行し、ストアド プロシージャやその他のユーザー定義コードなどのコードをデータベースで調べます。

権限

復元するデータベースが存在しない場合、ユーザーは RESTORE を実行できるように CREATE DATABASE 権限を持っている必要があります。 データベースが存在する場合、RESTORE 権限は、 sysadmin 固定サーバー ロールと dbcreator 固定サーバー ロールのメンバーと、データベースの所有者 (dbo) に既定で設定されます。

RESTORE 権限は、メンバーシップ情報が常にサーバーですぐに使用できるロールに付与されます。 固定データベース ロールのメンバーシップは、データベースがアクセス可能で破損していない場合にのみ確認できるため(RESTORE の実行時には常に当てはまるとは限りません)、 db_owner 固定データベース ロールのメンバーには RESTORE 権限がありません。

SQL Server Management Studio の使用

データベースを新しい場所に復元し、必要に応じてデータベースの名前を変更するには

  1. SQL Server データベース エンジンの適切なインスタンスに接続し、オブジェクト エクスプローラーでサーバー名をクリックしてサーバー ツリーを展開します。

  2. [ データベース] を右クリックし、[ データベースの復元] をクリックします。 [ データベースの復元 ] ダイアログ ボックスが開きます。

  3. [ 全般 ] ページで、[ ソース ] セクションを使用して、復元するバックアップ セットのソースと場所を指定します。 次のいずれかのオプションを選択します。

    • データベース

      ドロップダウン リストから復元するデータベースを選択します。 この一覧には、 msdb バックアップ履歴に従ってバックアップされたデータベースのみが含まれます。

    バックアップが別のサーバーから取得された場合、移行先サーバーには、指定されたデータベースのバックアップ履歴情報はありません。 この場合は、[ デバイス ] を選択して、復元するファイルまたはデバイスを手動で指定します。

    1. デバイス

      ブラウズ (...) ボタンをクリックして、バックアップ デバイスの選択 (バックアップ デバイスの選択) ダイアログ ボックスを開きます。 [ バックアップ メディアの種類 ] ボックスで、一覧表示されているデバイスの種類のいずれかを選択します。 [バックアップ メディア] ボックスに 1 つ以上のデバイスを選択するには、[追加] をクリックします。

      [バックアップ メディア] リスト ボックスにデバイスを追加したら、[OK] をクリックして [全般] ページに戻ります。

      [ ソース: デバイス: データベース ] ボックスで、復元するデータベースの名前を選択します。

      手記 この一覧は、 デバイス が選択されている場合にのみ使用できます。 選択したデバイスにバックアップがあるデータベースのみが使用できます。

  4. [ 変換先 ] セクションの [ データベース ] ボックスには、復元するデータベースの名前が自動的に入力されます。 データベースの名前を変更するには、[ データベース] ボックス に新しい名前を入力します。

  5. [ 復元先 ] ボックスで、既定値を [ 最後に作成したバックアップ まで] のままにするか、[ タイムライン ] をクリックして [バックアップ タイムライン ] ダイアログ ボックスにアクセスし、復旧アクションを停止する時点を手動で選択します。 特定の時点を指定する方法の詳細については、「 バックアップ タイムライン 」を参照してください。

  6. [ 復元するバックアップ セット] グリッドで、復元するバックアップを選択します。 このグリッドには、指定した場所で使用可能なバックアップが表示されます。 既定では、復旧計画が推奨されます。 推奨される復旧計画をオーバーライドするには、グリッド内の選択内容を変更します。 以前のバックアップの復元に依存するバックアップは、以前のバックアップの選択が解除されると自動的に選択解除されます。

    [復元するバックアップ セット] グリッドの列については、「データベースの復元 ([全般] ページ)」を参照してください。

  7. データベース ファイルの新しい場所を指定するには、[ ファイル ] ページを選択し、[ すべてのファイルをフォルダーに再配置] をクリックします。 データ ファイル フォルダーとログ ファイル フォルダーの新しい場所を指定します。 このグリッドの詳細については、「 データベースの復元 ([ファイル] ページ)」を参照してください。

  8. 必要に応じて、[ オプション] ページでオプションを調整します。 これらのオプションの詳細については、「 データベースの復元 (オプション ページ)」を参照してください。

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 バックアップデバイス [ ,...n ]

    [ と

    {

    [ RECOVERY |NORECOVERY ]

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

    [ , ]'logical_file_name_in_backup' を 'operating_system_file_name' に移動する [ ,...n ]

    }

    ;

    データベースを別のディスクに再配置する準備をするときは、十分な領域があることを確認し、既存のファイルとの競合の可能性を特定する必要があります。 これには、RESTORE DATABASE ステートメントで使用する予定と同じ MOVE パラメーターを指定する RESTORE VERIFYONLY ステートメントの使用が含まれます。

    次の表では、データベースを新しい場所に復元するという点で、この 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_number1 はバックアップ メディアの最初のバックアップ セットを示し、 backup_set_file_number2 は 2 番目のバックアップ セットを示します。 RESTORE HEADERONLY ステートメントを使用して、バックアップ セットのbackup_set_file_numberを取得できます。

    このオプションを指定しない場合、既定ではバックアップ デバイスで最初のバックアップ セットが使用されます。

    詳細については、「 RESTORE 引数 (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)

この例では、AdventureWorks2012 サンプル データベースのバックアップを復元して、MyAdvWorksという名前の新しいデータベースを作成します。このバックアップには、AdventureWorks2012_DataAdventureWorks2012_Log の 2 つのファイルが含まれています。 このデータベースでは、単純復旧モデルが使用されます。 AdventureWorks2012 データベースはサーバー インスタンスに既に存在するため、バックアップ内のファイルを新しい場所に復元する必要があります。 RESTORE FILELISTONLY ステートメントは、復元するデータベース内のファイルの数と名前を判別するために使用されます。 データベース バックアップは、バックアップ デバイス上の最初のバックアップ セットです。

ポイントインタイム リストアを含むトランザクション ログのバックアップと復元の例では、次のMyAdvWorks例と同様に、AdventureWorks2012 から作成されたMyAdvWorks_FullRM データベースを使用します。 ただし、結果の MyAdvWorks_FullRM データベースは、ALTER DATABASE <database_name> SET RECOVERY FULL Transact-SQL ステートメントを使用して完全復旧モデルを使用するように変更する必要があります。

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)」を参照してください。

関連タスク

こちらもご覧ください

データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理 (SQL Server)
RESTORE (Transact-SQL)
バックアップと復元を使用してデータベースをコピーする