データベースの差分バックアップの復元 (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) に関するページを参照してください。
セキュリティ
アクセス許可
復元するデータベースが存在しない場合、ユーザーは RESTORE を実行できる CREATE DATABASE 権限を使用する必要があります。 データベースが存在する場合、既定では、RESTORE 権限は sysadmin 固定サーバー ロールおよび dbcreator 固定サーバー ロールのメンバーと、データベースの所有者 (dbo) に与えられています (FROM DATABASE_SNAPSHOT オプションを使用する場合、データベースは常に存在します)。
RESTORE 権限は、サーバーでメンバーシップ情報を常に確認できるロールに与えられます。 固定データベース ロールのメンバーシップは、データベースがアクセス可能で破損していない場合にのみ確認することができますが、RESTORE の実行時にはデータベースがアクセス可能で損傷していないことが必ずしも保証されないため、 db_owner 固定データベース ロールのメンバーには RESTORE 権限は与えられません。
SQL Server Management Studio を使用する
データベースの差分バックアップを復元するには
オブジェクト エクスプローラーで、Microsoft SQL Server データベース エンジンの適切なインスタンスに接続した後、サーバー名をクリックしてサーバー ツリーを展開します。
[データベース] を展開します。 復元するデータベースに応じて、ユーザー データベースを選択するか、 [システム データベース]を展開してシステム データベースを選択します。
データベースを右クリックして [タスク]をポイントし、 [復元]をポイントして、 [データベース]をクリックします。
[全般] ページの 復元元のセクションを使用して、復元するバックアップ セットの復元元ファイルと場所を指定します。 次のいずれかのオプションを選択してください。
データベース
復元するデータベースをドロップダウン リストから選択します。 このリストには、 msdb バックアップ履歴に従ってバックアップされたデータベースのみが含まれます。
Note
別のサーバーで作成されたバックアップの場合、復元先のサーバーには指定されたデータベースのバックアップ履歴情報が存在しません。 この場合、 [デバイス] をクリックして、復元するファイルまたはデバイスを手動で指定します。
Device
参照ボタン ([...]) をクリックし、 [バックアップ デバイスの選択] ダイアログ ボックスを開きます。 [バックアップ メディアの種類] ボックスから、デバイスの種類を 1 つ選択します。 [バックアップ メディア] ボックスにデバイスを追加するには、 [追加]をクリックします。
[バックアップ メディア] ボックスに目的のデバイスを追加したら、 [OK] をクリックして、 [全般] ページに戻ります。
[ソース: デバイス: データベース] ボックスの一覧で、復元するデータベースの名前を選択します。
メモ この一覧は [デバイス] をクリックした場合にのみ使用できます。 選択されたデバイスにバックアップを持つデータベースのみが使用できるようになります。
復元先のセクションの [データベース] ボックスに、復元するデータベースの名前が自動的に表示されます。 データベースの名前を変更するには、 [データベース] ボックスに新しい名前を入力します。
Note
特定の時点で復元を停止するには、 [タイムライン] をクリックして、 [バックアップのタイムライン] ダイアログ ボックスにアクセスします。 特定の時点でデータベースの復元を停止する方法については、「SQL Server データベースを特定の時点に復元する (完全復旧モデル)」を参照してください。
[復元するバックアップ セット] グリッドで、差分バックアップを通じて復元するバックアップを選択します。
[復元するバックアップ セット] グリッドの列の詳細については、「データベースの復元 ([全般] ページ)」を参照してください。
[オプション] ページの [復元オプション] パネルでは、状況に応じて、次の任意のオプションを選択できます。
[既存のデータベースを上書きする (WITH REPLACE)]
[レプリケーションの設定を保存する (WITH KEEP_REPLICATION)]
[各バックアップを復元する前に確認する]
[復元するデータベースへのアクセスを制限する (WITH RESTRICTED_USER)]
これらのオプションの詳細については、「データベースの復元 ([オプション] ページ)」を参照してください。
[復旧状態] ボックスのオプションを選択します。 このボックスの選択内容により、復元操作後のデータベースの状態が決まります。
[RESTORE WITH RECOVERY] : コミットされていないトランザクションをロールバックして、データベースを使用可能な状態にします。これが既定の動作です。 別のトランザクション ログは復元できません。 このオプションは、必要なバックアップをすべて復元する場合に選択します。
[RESTORE WITH NORECOVERY] : データベースは操作不可状態のままとなり、コミットされていないトランザクションはロールバックされません。 別のトランザクション ログは復元できます データベースは、復旧されるまで使用できません。
[RESTORE WITH STANDBY] : データベースを読み取り専用モードにします。 コミットされていないトランザクションは元に戻されますが、復旧結果を元に戻せるように元に戻す操作をスタンバイ ファイルに保存します。
オプションの詳細については、「データベースの復元 ([オプション] ページ)」を参照してください。
データベースへのアクティブな接続がある場合、復元操作は失敗します。 Management Studio とデータベース間のすべてのアクティブな接続を閉じるには、[既存の接続を閉じる] オプションをオンにします。
復元操作と復元操作の間に、その都度、確認のメッセージを表示するには、 [各バックアップを復元する前に確認する] をオンにします。 通常は、その必要はありません。データベースが大きく、復元操作のステータスを監視する必要がある場合にのみ使用します。
(省略可) データベースを新しい場所に復元するには、 [ファイル] ページを使用します。 データベースの移動に関する詳細については、「データベースを新しい場所に復元する (SQL Server)」を参照してください。
[OK] を選択します。
Transact-SQL の使用
データベースの差分バックアップを復元するには
NORECOVERY 句を指定して RESTORE DATABASE ステートメントを実行し、データベースの差分バックアップの前に、データベースの完全バックアップを復元します。 詳細については、「 完全バックアップを復元する方法 (Transact-SQL)」を参照してください。
RESTORE DATABASE ステートメントを実行して、データベースの差分バックアップを復元します。そのとき、以下を指定します。
データベースの差分バックアップを適用するデータベースの名前。
データベースの差分バックアップの復元元であるバックアップ デバイス。
NORECOVERY 句。データベースの差分バックアップを復元した後、適用するトランザクション ログ バックアップがある場合に指定します。 それ以外の場合は、RECOVERY 句を指定します。
完全復旧モデルでも、一括ログ復旧モデルでも、データベースの差分バックアップの復元では、データベースの差分バックアップが完了した時点にデータベースが復元されます。 障害の時点にさかのぼってデータベースを復旧するには、直前のデータベースの差分バックアップを作成した後に生成されたすべてのトランザクション ログ バックアップを適用する必要があります。 詳細については、「トランザクション ログ バックアップの適用 (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