データベースの差分バックアップの復元 (SQL Server)

適用対象:SQL Server

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server でデータベースの差分バックアップを復元する方法について説明します。

このトピックの内容

はじめに

制限事項と制約事項

  • RESTORE は、明示的または暗黙的なトランザクションでは許可されません。

  • SQL Server によって作成されたバックアップは、それより前のバージョンの SQL Serverでは復元できません。

  • SQL Server では、SQL Server 2005 (9.x) 以降のバージョンを使用して作成したデータベース バックアップからユーザー データベースを復元できます。

前提条件

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

セキュリティ

アクセス許可

復元するデータベースが存在しない場合、ユーザーはCREATE DATABASEを実行するためにRESTORE権限を持っている必要があります。 データベースが存在する場合、 RESTORE のアクセス許可は、 sysadmin 固定サーバー ロールと dbcreator 固定サーバー ロールのメンバーと、データベースの所有者 (dbo) に既定で設定されます (FROM DATABASE_SNAPSHOT オプションの場合、データベースは常に存在します)。

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

SQL Server Management Studio を使用する

データベースの差分バックアップを復元するには

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

  2. [データベース] を展開します。 データベースに応じて、ユーザー データベースを選択するか、または System Databases を展開してシステム データベースを選択します。

  3. データベースを右クリックして [タスク]をポイントし、 [復元]をポイントして、 [データベース]をクリックします。

  4. [全般] ページの 復元元のセクションを使用して、復元するバックアップ セットの復元元ファイルと場所を指定します。 次のいずれかのオプションを選択してください。

    • データベース

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

    別のサーバーで作成されたバックアップの場合、復元先のサーバーには指定されたデータベースのバックアップ履歴情報が存在しません。 この場合、 [デバイス] をクリックして、復元するファイルまたはデバイスを手動で指定します。

    • デバイス

      参照ボタン ([...]) をクリックし、 [バックアップ デバイスの選択] ダイアログ ボックスを開きます。 [バックアップ メディアの種類] ボックスから、デバイスの種類を 1 つ選択します。 [バックアップ メディア] ボックスにデバイスを追加するには、 [追加]をクリックします。

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

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

      メモ この一覧は [デバイス] をクリックした場合にのみ使用できます。 選択されたデバイスにバックアップを持つデータベースのみが使用できるようになります。

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

    特定の時点で復元を停止するには、 [タイムライン] をクリックして、 [バックアップのタイムライン] ダイアログ ボックスにアクセスします。 特定の時点でデータベースの復元を停止する方法については、「SQL Server データベースを特定の時点に復元する (完全復旧モデル)」を参照してください。

  6. [復元するバックアップ セット] グリッドで、差分バックアップを通じて復元するバックアップを選択します。

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

  7. [オプション] ページの [復元オプション] パネルでは、状況に応じて、次の任意のオプションを選択できます。

    • [既存のデータベースを上書きする (WITH REPLACE)]

    • [レプリケーションの設定を保存する (WITH KEEP_REPLICATION)]

    • [各バックアップを復元する前に確認する]

    • [復元するデータベースへのアクセスを制限する (WITH RESTRICTED_USER)]

    これらのオプションの詳細については、「データベースの復元 ([オプション] ページ)」を参照してください。

  8. [復旧状態] ボックスのオプションを選択します。 このボックスの選択内容により、復元操作後のデータベースの状態が決まります。

    • RESTORE WITH RECOVERY は既定の動作であり、コミットされていないトランザクションをロールバックしてデータベースを使用する準備が整います。 別のトランザクション ログは復元できません。 このオプションは、必要なバックアップをすべて復元する場合に選択します。

    • RESTORE WITH NORECOVERY 。データベースは動作せず、コミットされていないトランザクションはロールバックされません。 別のトランザクション ログは復元できます データベースは、復旧されるまで使用できません。

    • RESTORE WITH STANDBY は、データベースを読み取り専用モードのままにします。 コミットされていないトランザクションは元に戻されますが、復旧結果を元に戻せるように元に戻す操作をスタンバイ ファイルに保存します。

    オプションの詳細については、「データベースの復元 ([オプション] ページ)」を参照してください。

  9. データベースへのアクティブな接続がある場合、復元操作は失敗します。 Management Studio とデータベース間のすべてのアクティブな接続を閉じるには、[既存の接続を閉じる] オプションをオンにします。

  10. 復元のたびに確認を求めるには、[各バックアップを復元する前に確認する] をオンにします。 通常は、その必要はありません。データベースが大きく、復元操作のステータスを監視する必要がある場合にのみ使用します。

  11. (省略可) データベースを新しい場所に復元するには、 [ファイル] ページを使用します。 データベースの移動に関する詳細については、「データベースを新しい場所に復元する (SQL Server)」を参照してください。

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

Transact-SQL の使用

データベースの差分バックアップを復元するには

  1. noRECOVERY 句を指定して RESTOREDATABASE ステートメントを実行して、データベースの差分バックアップの前に行われるデータベースの完全バックアップを復元します。 詳細については、「 完全バックアップを復元する方法 (Transact-SQL)」を参照してください。

  2. RESTORE DATABASE ステートメントを実行して、データベースの差分バックアップを復元します。次のように指定します。

    • データベースの差分バックアップを適用するデータベースの名前。

    • 差分データベース バックアップの復元元となるバックアップ デバイス。

    • NORECOVERY 句。データベースの差分バックアップを復元した後、適用するトランザクション ログ バックアップがある場合に指定します。 それ以外の場合は、RECOVERY 句を指定します。

  3. 完全復旧モデルでも、一括ログ復旧モデルでも、データベースの差分バックアップの復元では、データベースの差分バックアップが完了した時点にデータベースが復元されます。 障害の時点にさかのぼってデータベースを復旧するには、直前のデータベースの差分バックアップを作成した後に生成されたすべてのトランザクション ログ バックアップを適用する必要があります。 詳細については、「トランザクション ログ バックアップの適用 (SQL Server)」を参照してください。

例 (Transact-SQL)

A. データベースの差分バックアップの復元

この例では、 MyAdvWorks データベースのデータベース バックアップおよびデータベースの差分バックアップを復元します。

-- Assume the database is lost, and restore full database,   
-- specifying the original full database backup and NORECOVERY,   
-- which allows subsequent restore operations to proceed.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH NORECOVERY;  
GO  
-- Now restore the differential database backup, the second backup on   
-- the MyAdvWorks_1 backup device.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH FILE = 2,  
   RECOVERY;  
GO  

B. データベース、差分データベース バックアップ、およびトランザクション ログ バックアップの復元

この例では、 MyAdvWorks データベースのデータベース バックアップ、データベースの差分バックアップ、およびトランザクション ログ バックアップを復元します。

-- Assume the database is lost at this point. Now restore the full   
-- database. Specify the original full database backup and NORECOVERY.  
-- NORECOVERY allows subsequent restore operations to proceed.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH NORECOVERY;  
GO  
-- Now restore the differential database backup, the second backup on   
-- the MyAdvWorks_1 backup device.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH FILE = 2,  
   NORECOVERY;  
GO  
-- Now restore each transaction log backup created after  
-- the differential database backup.  
RESTORE LOG MyAdvWorks  
   FROM MyAdvWorks_log1  
   WITH NORECOVERY;  
GO  
RESTORE LOG MyAdvWorks  
   FROM MyAdvWorks_log2  
   WITH RECOVERY;  
GO  

関連タスク

参照

差分バックアップ (SQL Server)
RESTORE (Transact-SQL)