適用対象:SQL Server
この記事では、SQL Server Management Studio または Transact-SQL を使用して、SQL Server でファイルおよびファイル グループを復元する方法について示します。
このトピックの内容
作業を開始する準備:
ファイルおよびファイル グループを復元する方法:
はじめに
制限事項と制約事項
ファイルとファイル グループの復元中は、復元作業を実行するシステム管理者以外は、復元されるデータベースを使用しないでください。
RESTORE は、明示的または暗黙的なトランザクションでは許可されません。
単純復旧モデルでは、ファイルは読み取り専用のファイル グループに属している必要があります。
完全復旧モデルまたは一括ログ復旧モデルを使用する場合は、ファイルを復元する前に、ログの末尾と呼ばれるアクティブ トランザクション ログをバックアップする必要があります。 詳細については、トランザクション ログのバックアップ (SQL Server) に関するページを参照してください。
暗号化されたデータベースを復元するには、データベースの暗号化に使用された証明書または非対称キーにアクセスできることが必要です。 証明書または非対称キーがないと、データベースは復元できません。 このため、バックアップが必要である間は、データベース暗号化キーの暗号化に使用する証明書を保持しておく必要があります。 詳細については、「 SQL Server Certificates and Asymmetric Keys」をご覧ください。
セキュリティ
アクセス許可
復元するデータベースが存在しない場合、ユーザーはCREATE DATABASEを実行するためにRESTORE権限を持っている必要があります。 データベースが存在する場合、 RESTORE のアクセス許可は、 sysadmin 固定サーバー ロールと dbcreator 固定サーバー ロールのメンバーと、データベースの所有者 (dbo) に既定で設定されます (FROM DATABASE_SNAPSHOT オプションの場合、データベースは常に存在します)。
RESTORE アクセス許可は、メンバーシップ情報をサーバーが常に即座に参照できるロールに付与されます。 固定データベース ロールのメンバーシップは、データベースがアクセス可能で破損していない場合にのみ確認できるため( RESTORE が実行される場合は必ずしも当てはまるとは限りません)、 db_owner 固定データベース ロールのメンバーには RESTORE 権限がありません。
SQL Server Management Studio を使用する
ファイルおよびファイル グループを復元するには
オブジェクト エクスプローラーで、SQL Server のデータベース エンジンの適切なインスタンスに接続した後、サーバー名をクリックしてサーバー ツリーをクリックします。
[データベース] を展開します。 データベースに応じて、ユーザー データベースを選択するか、または System Databases を展開してシステム データベースを選択します。
データベースを右クリックして [タスク]をポイントし、 [復元]をクリックします。
[ファイルおよびファイル グループ]をクリックして [ファイルおよびファイル グループの復元] ダイアログ ボックスを開きます。
[全般] ページの [復元先データベース] ボックスに、復元するデータベースの名前を入力します。 新しいデータベースを入力するか、ドロップダウン リストから既存のデータベースを選択します。 このリストには、システム データベース master および tempdbを除いた、サーバー上のすべてのデータベースが表示されます。
復元するバックアップ セットの復元元ファイルと場所を指定するには、次のいずれかのオプションをクリックします。
データベースから
リスト ボックスにデータベース名を入力します。 このリストには、 msdb バックアップ履歴に従ってバックアップされたデータベースのみが含まれます。
デバイスから
参照ボタンをクリックします。 [バックアップ デバイスの指定] ダイアログ ボックスで、 [バックアップ メディアの種類] ボックスの一覧からいずれかのデバイスの種類を選択します。 [バックアップ メディア] ボックスに 1 つまたは複数のデバイスを選択するには、 [追加]をクリックします。
[バックアップ メディア] ボックスに目的のデバイスを追加したら、 [OK] をクリックして、 [全般] ページに戻ります。
[復元するバックアップ セットの選択] グリッドで、復元するバックアップを選択します。 このグリッドには、指定された場所に対して使用可能なバックアップが表示されます。 既定では、復旧計画が推奨されています。 推奨された復元計画を変更するには、グリッドの選択を変更します。 バックアップの選択を解除すると、それに依存するその他のバックアップも自動的に選択が解除されます。
列見出し 値 復元 このチェック ボックスをオンにすると、バックアップ セットが復元されます。 名前 バックアップ セットの名前です。 ファイルの種類 バックアップに含まれるデータの種類として、 データ、 ログ、 FILESTREAM データのいずれかを指定します。 テーブルに含まれるデータの種類は、 データ ファイルです。 トランザクション ログ データの種類は、 ログ ファイルです。 ファイル システムに格納されたバイナリ ラージ オブジェクト (BLOB) データの種類は、 FILESTREAM データ ファイルです。 Type 実行するバックアップの種類です。 [完全]、 [差分]、または [トランザクション ログ]のいずれかを指定します。 [サーバー] バックアップ操作を実行するデータベース エンジン インスタンスの名前です。 [ファイルの論理名] ファイルの論理名です。 データベース バックアップ操作に呼び出されるデータベース名です。 [開始日] バックアップ処理が開始された日時で、クライアントの地域設定に従って表示されます。 完了日 バックアップ操作が完了したときの日付と時刻。クライアントの地域設定で表示されます。 [サイズ] バックアップ セットのサイズ (バイト単位) です。 ユーザー名 バックアップ操作を実行したユーザーの名前。 詳細設定オプションを表示または選択するには、 [ページの選択] ペインの [オプション] をクリックします。
状況が適切であれば、 [復元オプション] パネルでは、次の任意のオプションを選択できます。
[ファイル グループとして復元する]
ファイル グループ全体が復元されることを示します。[既存のデータベースを上書きする]
同じ名前を持つ別のデータベースまたはファイルが既に存在していても、復元操作で既存のデータベースおよび関連ファイルを上書きするように指定します。このオプションを選択することは、Transact-SQL RESTORE ステートメントで REPLACE オプションを使用することと同じです。
[各バックアップを復元する前に確認する]
各バックアップ セットを復元する前にユーザーに確認します。このオプションは、サーバーのテープ デバイスが 1 台であるために、メディア セットごとにテープを入れ替える必要がある場合などに特に便利です。
[復元するデータベースへのアクセスを制限する]
復元するデータベースの使用を、 db_owner、 dbcreator、または sysadminのメンバーだけに制限します。このオプションを選択することは、Transact-SQL RESTORE ステートメントで RESTRICTED_USER オプションを使用するのと同義です。
新しい場所にデータベースを復元する場合、必要に応じて、 [次のデータベース ファイルに復元] グリッドで各ファイルの新しい復元先を指定できます。
列見出し 値 [元のファイル名] ソース バックアップ ファイルの完全なパスです。 ファイルの種類 バックアップに含まれるデータの種類として、 データ、 ログ、 FILESTREAM データのいずれかを指定します。 テーブルに含まれるデータの種類は、 データ ファイルです。 トランザクション ログ データの種類は、 ログ ファイルです。 ファイル システムに格納されたバイナリ ラージ オブジェクト (BLOB) データの種類は、 FILESTREAM データ ファイルです。 次の形式で復元 復元されるデータベース ファイルのフル パスです。 新しい復元ファイルを指定するには、テキスト ボックスをクリックして、指定されているパスおよびファイル名を編集します。 [ 名前を付けて復元 ] 列のパスまたはファイル名を変更することは、Transact-SQL RESTORE ステートメントで MOVE オプションを使用することと同じです。 [復旧状態] パネルの選択内容により、復元操作後のデータベースの状態が決まります。
[コミットされていないトランザクションをロールバックして、データベースを使用可能な状態にする。 別のトランザクション ログは復元できません。 (RESTORE 回復あり)
データベースを復旧します。 これが既定の動作です。 このオプションは、必要なすべてのバックアップをすべて復元する場合のみ選択します。 このオプションは、Transact-SQL RESTORE ステートメントで WITH RECOVERY を指定することと同じです。
データベースは操作不可状態のままで、コミットされていないトランザクションはロールバックしない。 別のトランザクション ログは復元できます (RESTORE NORECOVERY を使用)
データベースを復元状態のままにします。 データベースを復旧するには、上記の RESTORE WITH RECOVERY オプション (上記を参照) を使用して、別の復元を実行する必要があります。 このオプションは、Transact-SQL RESTORE ステートメントで WITH NORECOVERY を指定することと同じです。
このオプションを選択すると、 [レプリケーションの設定を保存する] オプションを選択できなくなります。
[データベースを読み取り専用モードにする。 コミットされていないトランザクションはロールバックされますが、復旧結果を元に戻せるようにロールバック操作をファイルに保存します。 (RESTORE WITH STANDBY)
データベースをスタンバイ状態のままにします。 このオプションは、Transact-SQL RESTORE ステートメントで WITH STANDBY を指定することと同じです。
このオプションを選択した場合は、スタンバイ ファイルを指定する必要があります。
ロールバック取り消しファイル
[ロールバック UNDO ファイル] テキスト ボックスで、スタンバイ ファイル名を指定します。 このオプションは、データベースを読み取り専用モード (RESTORE WITH STANDBY) のままにする場合に必要です。
Transact-SQL の使用
ファイルおよびファイル グループを復元するには
RESTORE DATABASE ステートメントを実行して、次のように指定して、ファイルとファイル グループのバックアップを復元します。
復元するデータベースの名前。
復元するデータベースの完全バックアップが格納されているバックアップ デバイス。
復元する各ファイルに対応する FILE 句。
復元する各ファイル グループに対応する FILEGROUP 句。
NORECOVERY 句。 バックアップ作成後にファイルが変更されていない場合は、RECOVERY 句を指定します。
ファイル バックアップの作成後にファイルが変更されている場合は、 RESTORE LOG ステートメントを実行してトランザクション ログ バックアップを適用し、次のように指定します。
トランザクション ログが適用されるデータベースの名前。
トランザクション ログ バックアップの復元元となるバックアップ デバイス。
現在のトランザクション ログ バックアップの後に適用する別のトランザクション ログ バックアップがある場合は、NORECOVERY 句を指定します。それ以外の場合は、RECOVERY 句を指定します。
トランザクション ログ バックアップを適用する場合は、そのバックアップが、ファイルおよびファイル グループがバックアップされた時点からログの末尾までの期間をカバーしている必要があります (すべてのデータベース ファイルを復元するのでない限り)。
例 (Transact-SQL)
この例では、 MyDatabase データベースのファイルとファイル グループを復元します。 データベースを現在の時刻に復元するために、2 つのトランザクション ログが適用されます。
USE master;
GO
-- Restore the files and filegroups for MyDatabase.
RESTORE DATABASE MyDatabase
FILE = 'MyDatabase_data_1',
FILEGROUP = 'new_customers',
FILE = 'MyDatabase_data_2',
FILEGROUP = 'first_qtr_sales'
FROM MyDatabase_1
WITH NORECOVERY;
GO
-- Apply the first transaction log backup.
RESTORE LOG MyDatabase
FROM MyDatabase_log1
WITH NORECOVERY;
GO
-- Apply the last transaction log backup.
RESTORE LOG MyDatabase
FROM MyDatabase_log2
WITH RECOVERY;
GO
関連項目
SSMS を使用してデータベース バックアップを復元する
ファイルおよびファイル グループのバックアップ (SQL Server)
データベースの完全バックアップの作成 (SQL Server)
トランザクション ログのバックアップ (SQL Server)
トランザクション ログ バックアップの復元 (SQL Server)
RESTORE (Transact-SQL)