例: データベースの部分復元 (完全復旧モデル)
適用対象: SQL Server
段階的な部分復元シーケンスでは、プライマリ ファイル グループとすべての読み書き可能なセカンダリ ファイル グループから順に、ファイル グループ レベルで段階的にデータベースが復元され、復旧されます。
この例では、障害発生後、データベース adb
を新しいコンピューターに復元します。 データベースでは完全復旧モデルを使用しているため、復元を開始する前に、データベースのログ末尾のバックアップを作成する必要があります。 障害が発生する前は、すべてのファイル グループがオンラインです。 ファイル グループ B
は読み取り専用です。 すべてのセカンダリ ファイル グループを復元する必要があります。ただし、これらのファイル グループは、重要度に従って A
、 C
、 B
の順に復元します (重要度が最も高いのは A です)。 この例では、ログ末尾のバックアップを含めて、4 つのログ バックアップがあるとします。
ログ末尾のバックアップ
データベースの管理者は、データベースを復元する前に、ログの末尾をバックアップする必要があります。 データベースが破損しているため、ログ末尾のバックアップを作成するには、NO_TRUNCATE オプションを使用する必要があります。
BACKUP LOG adb TO tailLogBackup WITH NORECOVERY, NO_TRUNCATE
ログ末尾のバックアップは、次の復元シーケンスの最後に適用されます。
復元シーケンス
Note
オンライン復元シーケンスでは、オフライン復元シーケンスと同じ構文を使用します。
プライマリおよびセカンダリ ファイル グループ
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
ファイル グループ
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
はオフラインで、このファイル グループのファイルは復旧待ち状態のままです。 遅延トランザクションは解決され、ログの切り捨てが行われます。ファイル グループ
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)