既存のファイルにファイルとファイル グループを復元する (SQL Server)

適用対象:SQL Server

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server でファイルとファイル グループを既存のファイルに復元する方法について示します。

このトピックの内容

はじめに

制限事項と制約事項

  • 復元するデータベースは、ファイルとファイル グループの復元作業を行うシステム管理者以外のユーザーによって使用されていない状態にしておく必要があります。

  • RESTORE は、明示的または暗黙的なトランザクションでは使用できません。

  • 完全復旧モデルまたは一括ログ復旧モデルを使用する場合は、ファイルを復元する前に、ログの末尾と呼ばれるアクティブ トランザクション ログをバックアップする必要があります。 詳細については、トランザクション ログのバックアップ (SQL Server) に関するページを参照してください。

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

セキュリティ

アクセス許可

復元するデータベースが存在しない場合、ユーザーは RESTORE を実行できる CREATE DATABASE 権限を使用する必要があります。 データベースが存在する場合、既定では、RESTORE 権限は sysadmin 固定サーバー ロールおよび dbcreator 固定サーバー ロールのメンバーと、データベースの所有者 (dbo) に与えられています (FROM DATABASE_SNAPSHOT オプションを使用する場合、データベースは常に存在します)。

RESTORE 権限は、サーバーでメンバーシップ情報を常に確認できるロールに与えられます。 固定データベース ロールのメンバーシップは、データベースがアクセス可能で破損していない場合にのみ確認することができますが、RESTORE の実行時にはデータベースがアクセス可能で損傷していないことが必ずしも保証されないため、 db_owner 固定データベース ロールのメンバーには RESTORE 権限は与えられません。

SQL Server Management Studio を使用する

ファイルとファイル グループを既存のファイルに復元するには

  1. オブジェクト エクスプローラーで、SQL Server データベース エンジンのインスタンスに接続し、インスタンスを拡張した後、データベースを展開します。

  2. 目的のデータベースを右クリックし、 [タスク][復元]の順にポイントし、 [ファイルおよびファイル グループ]をクリックします。

  3. [全般] ページの [復元先データベース] ボックスに、復元するデータベースの名前を入力します。 新しいデータベースを入力するか、ドロップダウン リストから既存のデータベースを選択します。 このリストには、システム データベース master および tempdbを除いた、サーバー上のすべてのデータベースが表示されます。

  4. 復元するバックアップ セットの復元元ファイルと場所を指定するには、次のいずれかのオプションをクリックします。

    • [復元元データベース]

      ボックスにデータベース名を入力します。 このリストには、 msdb バックアップ履歴に従ってバックアップされたデータベースのみが含まれます。

    • [復元元デバイス]

      参照ボタンをクリックします。 [バックアップ デバイスの指定] ダイアログ ボックスで、 [バックアップ メディアの種類] ボックスの一覧からいずれかのデバイスの種類を選択します。 [バックアップ メディア] ボックスに 1 つまたは複数のデバイスを選択するには、 [追加]をクリックします。

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

  5. [復元するバックアップ セットの選択] グリッドで、復元するバックアップを選択します。 このグリッドには、指定された場所に対して使用可能なバックアップが表示されます。 既定では、復旧計画が推奨されています。 推奨された復元計画を変更するには、グリッドの選択を変更します。 バックアップの選択を解除すると、それに依存するその他のバックアップも自動的に選択が解除されます。

    列見出し
    復元 このチェック ボックスをオンにすると、バックアップ セットが復元されます。
    Name バックアップ セットの名前です。
    ファイルの種類 バックアップに含まれるデータの種類として、 データログFILESTREAM データのいずれかを指定します。 テーブルに含まれるデータの種類は、 データ ファイルです。 トランザクション ログ データの種類は、 ログ ファイルです。 ファイル システムに格納されたバイナリ ラージ オブジェクト (BLOB) データの種類は、 FILESTREAM データ ファイルです。
    Type 実行するバックアップの種類です。 [完全][差分]、または [トランザクション ログ]のいずれかを指定します。
    [サーバー] バックアップ操作を実行するデータベース エンジン インスタンスの名前です。
    [ファイルの論理名] ファイルの論理名です。
    データベース バックアップ操作に呼び出されるデータベース名です。
    開始日 バックアップ操作が開始した日時で、クライアントの地域設定で表示されます。
    完了日 バックアップ操作が完了したときの日付と時刻。クライアントの地域設定で表示されます。
    [サイズ] バックアップ セットのサイズ (バイト単位) です。
    ユーザー名 バックアップ操作を実行したユーザーの名前。
  6. [ページの選択] ペインの [オプション] ページをクリックします。

  7. [復元オプション] パネルで、 [既存のデータベースを上書きする (WITH REPLACE)]をクリックします。 同じ名前を持つ別のデータベースまたはファイルが既に存在している場合でも、復元操作は、既存のデータベースおよび関連ファイルを上書きします。

  8. [OK] を選択します。

Transact-SQL の使用

ファイルとファイル グループを既存のファイルに復元するには

  1. RESTORE DATABASE ステートメントを実行して、ファイルとファイル グループのバックアップを復元します。そのとき、以下を指定します。

    • 復元するデータベースの名前。

    • 復元するデータベースの完全バックアップが格納されているバックアップ デバイス。

    • 復元する各ファイルに対応する FILE 句。

    • 復元する各ファイル グループに対応する FILEGROUP 句。

    • REPLACE オプション。各ファイルを、同じ名前および同じ場所の既存のファイルに復元できるよう指定します。

      注意

      REPLACE オプションは慎重に使用してください。 詳細については、 をご覧ください。

    • NORECOVERY オプション。 バックアップ作成後にファイルが変更されていない場合は、RECOVERY 句を指定します。

  2. ファイル バックアップの作成後にファイルが変更された場合は、RESTORE LOG ステートメントを実行して、トランザクション ログ バックアップを適用します。そのとき、以下を指定します。

    • トランザクション ログが適用されるデータベースの名前。

    • 復元するトランザクション ログのバックアップが格納されているバックアップ デバイス。

    • NORECOVERY 句。現在のトランザクション ログ バックアップを適用した後、別のバックアップがある場合に指定します。それ以外の場合は RECOVERY 句を指定します。

      トランザクション ログ バックアップを適用する場合、そのバックアップには、ファイルとファイル グループのバックアップが作成された時刻の情報が格納されている必要があります。

例 (Transact-SQL)

次の例では、 MyNwind データベースのファイルとファイル グループを復元し、同じ名前の既存のファイルを置き換えます。 データベースを現在の時刻に復元するために、2 つのトランザクション ログも適用されます。

USE master;  
GO  
-- Restore the files and filesgroups for MyNwind.  
RESTORE DATABASE MyNwind  
   FILE = 'MyNwind_data_1',  
   FILEGROUP = 'new_customers',  
   FILE = 'MyNwind_data_2',  
   FILEGROUP = 'first_qtr_sales'  
   FROM MyNwind_1  
   WITH NORECOVERY,  
   REPLACE;  
GO  
-- Apply the first transaction log backup.  
RESTORE LOG MyNwind  
   FROM MyNwind_log1  
   WITH NORECOVERY;  
GO  
-- Apply the last transaction log backup.  
RESTORE LOG MyNwind  
   FROM MyNwind_log2  
   WITH RECOVERY;  
GO  

参照

SSMS を使用してデータベース バックアップを復元する
RESTORE (Transact-SQL)
ファイルとファイル グループの復元 (SQL Server)
バックアップと復元によるデータベースのコピー