新しい場所へのファイルの復元 (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 を使用する
ファイルを新しい場所に復元するには
オブジェクト エクスプローラーで、SQL Server データベース エンジンのインスタンスに接続し、インスタンスを拡張した後、データベースを展開します。
目的のデータベースを右クリックし、 [タスク]、 [復元]の順にポイントし、 [ファイルおよびファイル グループ]をクリックします。
[全般] ページの [復元先データベース] ボックスに、復元するデータベースの名前を入力します。 新しいデータベースを入力するか、ドロップダウン リストから既存のデータベースを選択します。 このリストには、システム データベース master および tempdbを除いた、サーバー上のすべてのデータベースが表示されます。
復元するバックアップ セットの復元元ファイルと場所を指定するには、次のいずれかのオプションをクリックします。
[復元元データベース]
ボックスにデータベース名を入力します。 このリストには、 msdb バックアップ履歴に従ってバックアップされたデータベースのみが含まれます。
[復元元デバイス]
参照ボタンをクリックします。 [バックアップ デバイスの指定] ダイアログ ボックスで、 [バックアップ メディアの種類] ボックスの一覧からいずれかのデバイスの種類を選択します。 [バックアップ メディア] ボックスに 1 つまたは複数のデバイスを選択するには、 [追加]をクリックします。
[バックアップ メディア] ボックスに目的のデバイスを追加したら、 [OK] をクリックして、 [全般] ページに戻ります。
[復元するバックアップ セットの選択] グリッドで、復元するバックアップを選択します。 このグリッドには、指定された場所に対して使用可能なバックアップが表示されます。 既定では、復旧計画が推奨されています。 推奨された復元計画を変更するには、グリッドの選択を変更します。 バックアップの選択を解除すると、それに依存するその他のバックアップも自動的に選択が解除されます。
列見出し 値 復元 このチェック ボックスをオンにすると、バックアップ セットが復元されます。 名前 バックアップ セットの名前です。 ファイルの種類 バックアップに含まれるデータの種類として、 データ、 ログ、 FILESTREAM データのいずれかを指定します。 テーブルに含まれるデータの種類は、 データ ファイルです。 トランザクション ログ データの種類は、 ログ ファイルです。 ファイル システムに格納されたバイナリ ラージ オブジェクト (BLOB) データの種類は、 FILESTREAM データ ファイルです。 Type 実行するバックアップの種類です。 [完全]、 [差分]、または [トランザクション ログ]のいずれかを指定します。 [サーバー] バックアップ操作を実行するデータベース エンジン インスタンスの名前です。 [ファイルの論理名] ファイルの論理名です。 データベース バックアップ操作に呼び出されるデータベース名です。 [開始日] バックアップ操作が開始した日時で、クライアントの地域設定で表示されます。 完了日 バックアップ操作が完了したときの日付と時刻。クライアントの地域設定で表示されます。 [サイズ] バックアップ セットのサイズ (バイト単位) です。 ユーザー名 バックアップ操作を実行したユーザーの名前。 [ページの選択] ペインの [オプション] ページをクリックします。
[次のデータベース ファイルに復元] グリッドに、移動するファイルの新しい場所を指定します。
列見出し 値 [元のファイル名] ソース バックアップ ファイルの完全なパスです。 ファイルの種類 バックアップに含まれるデータの種類として、 データ、 ログ、 FILESTREAM データのいずれかを指定します。 テーブルに含まれるデータの種類は、 データ ファイルです。 トランザクション ログ データの種類は、 ログ ファイルです。 ファイル システムに格納されたバイナリ ラージ オブジェクト (BLOB) データの種類は、 FILESTREAM データ ファイルです。 [復元先] 復元されるデータベース ファイルのフル パスです。 新しい復元ファイルを指定するには、テキスト ボックスをクリックして、指定されているパスおよびファイル名を編集します。 [復元先] 列でパスまたはファイル名を変更することは、Transact-SQL RESTORE ステートメントで MOVE オプションを使用することと同じです。 [OK] を選択します。
Transact-SQL の使用
ファイルを新しい場所に復元するには
必要に応じて、RESTORE FILELISTONLY ステートメントを実行し、データベースの完全バックアップ内のファイル数とファイル名を特定します。
次の項目を指定した RESTORE DATABASE ステートメントを実行し、データベースの完全バックアップを復元します。
復元するデータベースの名前。
復元するデータベースの完全バックアップが格納されているバックアップ デバイス。
新しい場所に復元するファイルごとの MOVE 句。
NORECOVERY 句。
ファイル バックアップの作成後にファイルが変更された場合は、RESTORE LOG ステートメントを実行して、トランザクション ログ バックアップを適用します。そのとき、以下を指定します。
トランザクション ログが適用されるデータベースの名前。
復元するトランザクション ログのバックアップが格納されているバックアップ デバイス。
NORECOVERY 句。現在のトランザクション ログ バックアップを適用した後、別のバックアップがある場合に指定します。それ以外の場合は RECOVERY 句を指定します。
トランザクション ログ バックアップを適用する場合、そのバックアップには、ファイルとファイル グループのバックアップが作成された時刻の情報が格納されている必要があります。
例 (Transact-SQL)
この例では、元は C ドライブに配置されていた MyNwind
データベースの 2 つのファイルを D ドライブ上の新しい場所に復元します。データベースを現在の時刻に復元するために、2 つのトランザクション ログも適用されます。 RESTORE FILELISTONLY
ステートメントは、復元するデータベース内のファイルの数、論理名、および物理名をするために使用します。
USE master;
GO
-- First determine the number and names of the files in the backup.
RESTORE FILELISTONLY
FROM MyNwind_1;
-- Restore the files for MyNwind.
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY,
MOVE 'MyNwind_data_1' TO 'D:\MyData\MyNwind_data_1.mdf',
MOVE 'MyNwind_data_2' TO 'D:\MyData\MyNwind_data_2.ndf';
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)