例:データベースの部分復元 (完全復旧モデル)

適用対象:SQL Server

段階的な部分復元シーケンスでは、プライマリ ファイル グループとすべての読み書き可能なセカンダリ ファイル グループから順に、ファイル グループ レベルで段階的にデータベースが復元され、復旧されます。

この例では、障害発生後、データベース adb を新しいコンピューターに復元します。 データベースでは完全復旧モデルを使用しているため、復元を開始する前に、データベースのログ末尾のバックアップを作成する必要があります。 障害が発生する前は、すべてのファイル グループがオンラインです。 ファイル グループ B は読み取り専用です。 すべてのセカンダリ ファイル グループを復元する必要があります。ただし、これらのファイル グループは、重要度に従って ACBの順に復元します (重要度が最も高いのは A です)。 この例では、ログ末尾のバックアップを含めて、4 つのログ バックアップがあるとします。

ログ末尾のバックアップ

データベースの管理者は、データベースを復元する前に、ログの末尾をバックアップする必要があります。 データベースが破損しているため、ログ末尾のバックアップを作成するには、NO_TRUNCATE オプションを使用する必要があります。

BACKUP LOG adb TO tailLogBackup WITH NORECOVERY, NO_TRUNCATE  

ログ末尾のバックアップは、次の復元シーケンスの最後に適用されます。

復元シーケンス

注意

オンライン復元シーケンスでは、オフライン復元シーケンスと同じ構文を使用します。

  1. プライマリおよびセカンダリ ファイル グループ Aの部分復元を行います。

    RESTORE DATABASE adb FILEGROUP='Primary' FROM backup1   
       WITH PARTIAL, NORECOVERY  
    RESTORE DATABASE adb FILEGROUP='A' FROM backup2   
       WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup3 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup4 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup5 WITH NORECOVERY  
    RESTORE LOG adb FROM tailLogBackup WITH RECOVERY  
    
  2. ファイル グループ Cをオンライン復元します。

    この時点で、プライマリ ファイル グループとセカンダリ ファイル グループ A はオンラインです。 ファイル グループ B とファイル グループ C のすべてのファイルは復旧が保留されており、ファイル グループはオフラインです。

    最後の RESTORE LOG ステートメント (手順 1.) からのメッセージでは、ファイル グループ C が使用できないため、このファイル グループを含むトランザクションのロールバックに遅延が生じたことが示されています。 通常の操作は続行できますが、これらのトランザクションによってロックが保持され、ロールバックが完了するまで、ログの切り捨てが行われません。

    2 番目の復元シーケンスでは、データベース管理者がファイル グループ Cを復元します。

    RESTORE DATABASE adb FILEGROUP='C' FROM backup2a WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup3 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup4 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup5 WITH NORECOVERY  
    RESTORE LOG adb FROM tailLogBackup WITH RECOVERY  
    

    この時点で、プライマリ ファイル グループ、ファイル グループ A 、およびファイル グループ C はオンラインです。 ファイル グループ B はオフラインで、このファイル グループのファイルは復旧待ち状態のままです。 遅延トランザクションは解決され、ログの切り捨てが行われます。

  3. ファイル グループ Bをオンライン復元します。

3 番目の復元シーケンスでは、データベース管理者がファイル グループ Bを復元します。 ファイル グループ B のバックアップは、ファイル グループ B が読み取り専用になってから行います。このため、復旧中にこのファイル グループをロールフォワードする必要はありません。

RESTORE DATABASE adb FILEGROUP='B' FROM backup2b WITH RECOVERY  

すべてのファイル グループがオンラインになります。

その他の例

参照

BACKUP (Transact-SQL)
オンライン復元 (SQL Server)
トランザクション ログ バックアップの適用 (SQL Server)
RESTORE (Transact-SQL)
段階的な部分復元 (SQL Server)