次の方法で共有


トランザクション ログ バックアップの復元 (SQL Server)

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して SQL Server 2014 でトランザクション ログ バックアップを復元する方法について説明します。

このトピックについて

開始する前に

[前提条件]

  • バックアップは、作成された順序で復元する必要があります。 特定のトランザクション ログ バックアップを復元するには、まず、次の以前のバックアップをコミットされていないトランザクションをロールバックせずに (WITH NORECOVERY) 復元する必要があります。

    • データベースの完全バックアップと最後の差分バックアップ (存在する場合) は、特定のトランザクション ログ バックアップの前に作成されます。 最新の完全バックアップまたは差分データベース バックアップを作成する前に、データベースで完全復旧モデルまたは一括ログ復旧モデルが使用されている必要があります。

    • データベースの完全バックアップまたは差分バックアップ (復元する場合) の後、および特定のトランザクション ログ バックアップの前に作成されたすべてのトランザクション ログ バックアップ。 ログ バックアップは、ログ チェーンにギャップを生じさせることなく、作成された順序で適用する必要があります。

      トランザクション ログ バックアップの詳細については、「 トランザクション ログ バックアップ (SQL Server) 」および「 トランザクション ログ バックアップの適用 (SQL Server)」を参照してください。

安全

権限

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

SQL Server Management Studio の使用

警告

復元の通常のプロセスは、[ データベースの復元 ] ダイアログ ボックスで、データバックアップと差分バックアップと共にログ バックアップを選択することです。

トランザクション ログ バックアップを復元するには

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

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

  3. データベースを右クリックし、[ タスク] をポイントし、[ 復元] をポイントし、[ トランザクション ログ] をクリックすると、[ トランザクション ログの復元 ] ダイアログ ボックスが開きます。

    トランザクション ログが淡色表示になっている場合は、最初に完全バックアップまたは差分バックアップを復元する必要があります。 [データベース バックアップ] ダイアログ ボックスを使用します。

  4. [ 全般 ] ページの [ データベース ] ボックスの一覧で、データベースの名前を選択します。 復元中の状態のデータベースのみが一覧表示されます。

  5. 復元するバックアップ セットのソースと場所を指定するには、次のいずれかのオプションをクリックします。

    • データベースの以前のバックアップから

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

    • ファイルまたはテープから

      ブラウズ (...) ボタンをクリックして、バックアップ デバイスの選択 (バックアップ デバイスの選択) ダイアログ ボックスを開きます。 [ バックアップ メディアの種類 ] ボックスで、一覧表示されているデバイスの種類のいずれかを選択します。 [バックアップ メディア] ボックスに 1 つ以上のデバイスを選択するには、[追加] をクリックします。

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

  6. [ 復元するトランザクション ログ バックアップの選択 ] グリッドで、復元するバックアップを選択します。 このグリッドには、選択したデータベースで使用できるトランザクション ログ バックアップが一覧表示されます。 ログ バックアップは、最初の LSN がデータベースの 最後の LSN より大きい場合にのみ使用できます。 ログ バックアップは、ログ シーケンス番号 (LSN) の順序で一覧表示され、この順序で復元する必要があります。

    次の表に、グリッドの列ヘッダーとその値を示します。

    ヘッダ 価値
    復元 選択したチェック ボックスは、復元するバックアップ セットを示します。
    名前 バックアップ セットの名前。
    コンポーネント バックアップ コンポーネント: データベースファイル、または <blank> (トランザクション ログ用)。
    データベース バックアップ操作に関係するデータベースの名前。
    [開始日] バックアップ操作が開始された日時。クライアントのリージョン設定に表示されます。
    完了日 バックアップ操作が完了した日時。クライアントのリージョン設定に表示されます。
    First LSN バックアップ セット内の最初のトランザクションのログ シーケンス番号。 ファイル バックアップの場合は空白。
    最後のLSN バックアップ セット内の最後のトランザクションのログ シーケンス番号。 ファイル バックアップの場合は空白。
    チェックポイント LSN バックアップが作成された時点の最新のチェックポイントのログ シーケンス番号。
    完全な LSN 最新のデータベースの完全バックアップのログ シーケンス番号。
    サーバー バックアップ操作を実行したデータベース エンジン インスタンスの名前。
    ユーザー名 バックアップ操作を実行したユーザーの名前。
    サイズ バックアップ セットのサイズ (バイト単位)。
    立場 ボリューム内のバックアップ セットの位置。
    [有効期限] バックアップ セットの有効期限が切れる日時。
  7. 次のいずれかを選択します。

    • ポイント イン タイム

      既定値 (可能な限り最新) を保持するか、参照ボタンをクリックして特定の日付と時刻を選択します。このボタンをクリックすると、[ ポイントインタイム リストア ] ダイアログ ボックスが開きます。

    • マークされたトランザクション

      以前にマークされたトランザクションにデータベースを復元します。 このオプションを選択すると、[ マークされたトランザクションの選択 ] ダイアログ ボックスが起動し、選択したトランザクション ログ バックアップで使用可能なマークされたトランザクションが一覧表示されるグリッドが表示されます。

      既定では、復元はマークされたトランザクションまでですが、除外されます。 マークされたトランザクションも復元するには、[マーク されたトランザクションを含める] を選択します。

      次の表に、グリッドの列ヘッダーとその値を示します。

      ヘッダ 価値
      <空> マークを選択するためのチェック ボックスを表示します。
      トランザクション マーク トランザクションがコミットされたときにユーザーによって指定されたマークされたトランザクションの名前。
      日付 トランザクションがコミットされた日時。 トランザクションの日付と時刻は、クライアント コンピューターの日付と時刻ではなく、 msdbgmarkhistory テーブルに記録された状態で表示されます。
      説明 トランザクションがコミットされたときにユーザーによって指定されたマークされたトランザクションの説明 (存在する場合)。
      LSN マークされたトランザクションのログ シーケンス番号。
      データベース マークされたトランザクションがコミットされたデータベースの名前。
      ユーザー名 マークされたトランザクションをコミットしたデータベース ユーザーの名前。
  8. 詳細オプションを表示または選択するには、[ページの選択] ウィンドウの [オプション] をクリックします。

  9. [ 復元オプション ] セクションの選択肢は次のとおりです。

    • レプリケーション設定を保持する (WITH KEEP_REPLICATION)

      データベースが作成されたサーバー以外のサーバーにパブリッシュされたデータベースを復元するときに、レプリケーション設定を保持します。

      このオプションは、[ コミットされていないトランザクションをロールバックしてデータベースを使用する準備 を整える]オプション (後述) でのみ使用できます。これは、 RECOVERY オプションを使用してバックアップを復元する場合と同じです。

      このオプションをオンにすることは、Transact-SQLRESTORE ステートメントで KEEP_REPLICATION オプションを使用することと同じです。

    • 各バックアップを復元する前にプロンプトを表示する

      各バックアップ セットを復元する前に (最初のバックアップ セットの後に) このオプションを選択すると、[ 復元を続行 する] ダイアログ ボックスが表示され、復元シーケンスを続行するかどうかを指定するように求められます。 このダイアログには、次のメディア セットの名前 (使用可能な場合)、バックアップ セット名、およびバックアップ セットの説明が表示されます。

      このオプションは、異なるメディア セットのテープをスワップする必要がある場合に特に便利です。 たとえば、サーバーにテープ デバイスが 1 つしかない場合に使用できます。 続行する準備ができるまで待ってから、[ OK] をクリックします。

      [ いいえ ] をクリックすると、データベースは復元中の状態になります。 必要に応じて、最後に復元が完了した後も復元シーケンスを続行できます。 次のバックアップがデータまたは差分バックアップの場合は、 データベースの復元 タスクをもう一度使用します。 次のバックアップがログ バックアップの場合は、 トランザクション ログの復元 タスクを使用します。

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

      復元されたデータベースを 、db_ownerdbcreator、または sysadmin のメンバーのみが使用できるようにします。

      このオプションをチェックすることは、Transact-SQLRESTORE ステートメントで RESTRICTED_USER オプションを使用するのと同義です。

  10. 回復状態オプションでは、復元操作後のデータベースの状態を指定します。

    • コミットされていないトランザクションをロールバックして、データベースを使用できる状態のままにします。 別のトランザクション ログは復元できません。 (リカバリを伴う復元)

      データベースを復旧します。 このオプションは、Transact-SQLRESTORE ステートメントのRECOVERY オプションと同じです。

      復元するログ ファイルがない場合にのみ、このオプションを選択します。

    • データベースは操作不可のままにし、コミットされていないトランザクションはロールバックしないでください。 別のトランザクション ログは復元できます (RESTORE を NORECOVERY で実行)

      データベースが復旧されず、 RESTORING 状態になります。 このオプションは、Transact-SQLRESTORE ステートメントで NORECOVERY オプションを使用することと同じです。

      このオプションを選択すると、[ レプリケーション設定の保持 ] オプションは使用できません。

      重要

      ミラー データベースまたはセカンダリ データベースの場合は、常にこのオプションを選択します。

    • [データベースを読み取り専用モードにする。 コミットされていないトランザクションを元に戻しますが、回復効果を元に戻すことができるように、元に戻す操作をファイルに保存します。 (待機状態で復元)

      データベースをスタンバイ状態のままにします。 このオプションは、Transact-SQLRESTORE ステートメントで STANDBY オプションを使用することと同じです。

      このオプションを選択するには、スタンバイ ファイルを指定する必要があります。

  11. 必要に応じて、[スタンバイ ファイル] テキスト ボックスに スタンバイ ファイル 名を指定します。 このオプションは、データベースを読み取り専用モードのままにする場合に必要です。 スタンバイ ファイルを参照するか、テキスト ボックスにパス名を入力します。

Transact-SQL の使用

重要

あいまいさを排除するために、すべての RESTORE ステートメントで WITH NORECOVERY または WITH RECOVERY を常に明示的に指定することをお勧めします。 これは、スクリプトを記述する場合に特に重要です。

トランザクション ログ バックアップを復元するには

  1. RESTORE LOG ステートメントを実行して、トランザクション ログ バックアップを適用します。次のように指定します。

    • トランザクション ログの適用先となるデータベースの名前。

    • トランザクション ログ バックアップの復元元となるバックアップ デバイス。

    • NORECOVERY 句。

    このステートメントの基本的な構文は次のとおりです。

    NORECOVERY オプションを使用して <backup_device> からログ database_name を復元します。

    ここで、database_nameはデータベースの名前であり、<backup_device>復元されるログ バックアップを含むデバイスの名前です。

  2. 適用する必要があるトランザクション ログ バックアップごとに手順 1 を繰り返します。

  3. 復元シーケンスの最後のバックアップを復元した後、データベースを復旧するには、次のいずれかのステートメントを使用します。

    • 最後の RESTORE LOG ステートメントの一部としてデータベースを復旧します。

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;  
      GO  
      
    • 別の RESTORE DATABASE ステートメントを使用してデータベースの復旧を待機します。

      RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;   
      RESTORE DATABASE <database_name> WITH RECOVERY;  
      GO  
      

      データベースの復旧を待機すると、必要なすべてのログ バックアップが復元されたことを確認できます。 この方法は、多くの場合、ポイントインタイム リストアを実行する場合に推奨されます。

    重要

    ミラー データベースを作成する場合は、復旧手順を省略します。 ミラー データベースは RESTORING 状態のままである必要があります。

例 (Transact-SQL)

既定では、 AdventureWorks2012 データベースでは単純復旧モデルが使用されます。 次の例では、完全復旧モデルを使用するようにデータベースを変更する必要があります。

ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;  

ある。 1 つのトランザクション ログ バックアップの適用

次の例では、まず、AdventureWorks2012_1という名前のバックアップ デバイスに存在するデータベースの完全バックアップを使用して AdventureWorks2012 データベースを復元します。 次に、 AdventureWorks2012_logという名前のバックアップ デバイスに存在する最初のトランザクション ログ バックアップを適用します。 最後に、この例ではデータベースを復旧します。

RESTORE DATABASE AdventureWorks2012  
   FROM AdventureWorks2012_1  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorks2012_log  
   WITH FILE = 1,  
   WITH NORECOVERY;  
GO  
RESTORE DATABASE AdventureWorks2012  
   WITH RECOVERY;  
GO  

B. 複数のトランザクション ログ バックアップの適用

次の例では、まず、AdventureWorks2012_1という名前のバックアップ デバイスに存在するデータベースの完全バックアップを使用して AdventureWorks2012 データベースを復元します。 次に、 AdventureWorks2012_logという名前のバックアップ デバイスに存在する最初の 3 つのトランザクション ログ バックアップを 1 つずつ適用します。 最後に、この例ではデータベースを復旧します。

RESTORE DATABASE AdventureWorks2012  
   FROM AdventureWorks2012_1  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorks2012_log  
   WITH FILE = 1,  
   NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorks2012_log  
   WITH FILE = 2,  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2012  
   FROM AdventureWorks2012_log  
   WITH FILE = 3,  
   WITH NORECOVERY;  
GO  
RESTORE DATABASE AdventureWorks2012  
   WITH RECOVERY;  
GO  

関連タスク

こちらもご覧ください

RESTORE (Transact-SQL)
トランザクション ログ バックアップの適用 (SQL Server)