このトピックは、複数のファイルまたはファイル グループを含む SQL Server の Enterprise エディションのデータベースにのみ関連します。単純なモデルでは、読み取り専用のファイル グループに対してのみ使用できます。
部分復元とメモリ最適化テーブルの詳細については、「Memory-Optimized テーブルを使用した データベースの段階的な部分復元」を参照してください。
段階的に複数 のファイル グループを含むデータベースを段階的に復元および復旧できます。 段階的な部分復元には、プライマリ ファイル グループから始まり、場合によっては 1 つ以上のセカンダリ ファイル グループから始まる一連の復元シーケンスが含まれます。 段階的な部分復元では、最終的にデータベースの一貫性を確保するためのチェックが維持されます。 復元シーケンスが完了したら、回復されたファイルが有効でデータベースと一貫性がある場合は、直接オンラインにすることができます。
段階的な部分復元はすべての復旧モデルで機能しますが、単純なモデルよりも完全なモデルおよび一括ログモデルの方が柔軟性が高くなります。
すべての段階的な復元は、部分復元シーケンスと呼ばれる最初の 復元シーケンスで始まります。 少なくとも、部分復元シーケンスはプライマリ ファイル グループを復元および復旧し、単純復旧モデルではすべての読み取り/書き込みファイル グループを復元します。 部分復元シーケンス中は、データベース全体をオフラインにする必要があります。 その後、データベースがオンラインになり、復元されたファイル グループを使用できるようになります。 ただし、保存されていないファイル グループはオフラインのままであり、アクセスできません。 ただし、オフラインのファイル グループは、後でファイルの復元によって復元してオンラインにすることができます。
データベースで使用される復旧モデルに関係なく、部分復元シーケンスは、完全バックアップを復元し、PARTIAL オプションを指定する RESTORE DATABASE ステートメントで始まります。 PARTIAL オプションは常に新しい段階的な部分復元を開始します。したがって、部分復元シーケンスの初期ステートメントでは PARTIAL を 1 回だけ指定する必要があります。 部分復元シーケンスが完了し、データベースがオンラインになると、残りのファイルの状態は、回復が延期されたため、"復旧保留中" になります。
その後、段階的な部分復元には通常、ファイル グループ復元シーケンスと呼ばれる 1 つ以上 の復元シーケンスが含まれます。 必要に応じて、特定のファイル グループ復元シーケンスの実行を待機できます。 各ファイル グループ復元シーケンスは、1 つ以上のオフライン ファイル グループをデータベースと一致するポイントに復元および復旧します。 ファイル グループ復元シーケンスのタイミングと数は、回復の目標、復元するオフライン ファイル グループの数、およびファイル グループ復元シーケンスごとに復元するオフライン ファイル グループの数によって異なります。
段階的な部分復元を実行するための正確な要件は、データベースの復旧モデルによって異なります。 詳細については、このトピックで後述する「単純復旧モデルでの段階的な部分復元」および「完全復旧モデルでの段階的な部分復元」を参照してください。
段階的な部分復元のシナリオ
SQL Server のすべてのエディションでは、オフライン部分復元がサポートされています。 Enterprise エディションでは、段階的な部分復元はオンラインでもオフラインでもかまいません。 オフラインとオンラインの段階的な部分復元の影響は次のとおりです。
オフライン部分復元のシナリオ
オフライン部分復元では、部分復元シーケンスの後にデータベースがオンラインになります。 まだ復元されていないファイル グループはオフラインのままですが、データベースをオフラインにした後、必要に応じて復元できます。
オンライン部分復元のシナリオ
オンライン部分復元では、部分復元シーケンスの後にデータベースがオンラインになり、プライマリ ファイル グループと回復されたセカンダリ ファイル グループを使用できます。 まだ復元されていないファイル グループはオフラインのままですが、データベースがオンラインのままでも、必要に応じて復元できます。
オンラインの段階的な部分復元には、遅延トランザクションが含まれる場合があります。 ファイル グループのサブセットのみが復元されると、オンライン ファイル グループに依存するデータベース内のトランザクションが遅延される可能性があります。 データベース全体が一貫性を持つ必要があるため、これは一般的です。 詳細については、「 遅延トランザクション (SQL Server)」を参照してください。
SQL Server In-Memory OLTP 部分復元シナリオ
In-Memory OLTP データベースの段階的な部分復元については、「Memory-Optimized テーブルを使用した データベースの段階的なバックアップと復元」を参照してください。
制約
部分復元シーケンスで FILESTREAM ファイル グループを除外した場合、特定の時点への復元はサポートされません。 復元シーケンスを強制的に実行して続行することもできます。 ただし、RESTORE ステートメントから除外された FILESTREAM ファイル グループは復元できません。 特定の時点への復元を強制的に実行するには、STOPAT、STOPATMARK、または STOPBEFOREMARK オプションに CONTINUE_AFTER_ERROR オプションを組み合わせて指定します。これらのオプションは、後続の RESTORE LOG ステートメントでも指定する必要があります。 CONTINUE_AFTER_ERROR を指定した場合、部分復元シーケンスは正常に実行されますが、FILESTREAM ファイル グループは復元できなくなります。
単純復旧モデルでの段階的な部分復元
単純復旧モデルでは、部分復元シーケンスはデータベース全体または部分バックアップで始まる必要があります。 次に、復元されたバックアップが差分ベースの場合は、次に最新の差分バックアップを復元します。
最初の部分復元シーケンス中に、読み取り/書き込みファイル グループのサブセットのみを復元する場合、部分的に復元されたデータベースを復旧すると、保存されていないファイル グループは機能しなくなります。 部分復元シーケンスから読み取り/書き込みファイル グループを省略することは、次の場合にのみ適切です。
保存されていないファイル グループが機能しなくなる予定です。
復元シーケンスは、復元されていない各ファイルグループが読み取り専用または削除もしくは機能しなくなった復旧ポイントに到達します(部分復元シーケンスの以前の復元中に)。
データベースが単純復旧モデルを使用している間に完全バックアップが作成されましたが、復旧ポイントはデータベースが完全復旧モデルを使用している時点です。 詳細については、このトピックで後述する「復旧モデルが単純から完全に切り替えられたデータベースの段階的な部分復元の実行」を参照してください。
単純復旧モデルでの段階的部分復元の要件
単純復旧モデルでは、初期ステージでプライマリ ファイル グループとすべての読み取り/書き込みセカンダリ ファイル グループが復元および復旧されます。 初期ステージが完了した後、回復されたファイルが有効でデータベースと一貫性がある場合は、直接オンラインにすることができます。
その後、1 つ以上の追加ステージで読み取り専用のファイル グループを復元できます。
次の条件に該当する場合にのみ、読み取り専用セカンダリ ファイル グループに対して段階的な部分復元を使用できます。
バックアップ時には読み取り専用の状態でした。
読み取り専用のままです (プライマリ ファイル グループと論理的に一貫性を保ちます)。
段階的な部分復元を実行するには、次のガイドラインに従う必要があります。
単純復旧モデル データベースの段階的な部分復元の完全なバックアップ セットには、次のものが含まれている必要があります。
プライマリ ファイル グループと、バックアップ時に読み取り/書き込みがあったすべてのファイル グループを含む、データベースの一部または完全バックアップ。
各読み取り専用ファイルのバックアップ。
読み取り専用ファイルのバックアップをプライマリ ファイル グループと一致させるには、セカンダリ ファイル グループがバックアップされたときからプライマリ ファイル グループを含むバックアップが完了するまで読み取り専用である必要があります。 ファイル グループが読み取り専用になった後に実行された場合は、差分ファイル バックアップを使用できます。
段階的な部分復元 (単純復旧モデル)
段階的な部分復元シナリオには、次のステージが含まれます。
初期段階 (プライマリ ファイル グループとすべての読み取り/書き込みファイル グループの復元と回復)
初期ステージでは、部分復元が実行されます。 部分復元シーケンスは、プライマリ ファイル グループ、すべての読み取り/書き込みセカンダリ ファイル グループ、および (必要に応じて) 一部の読み取り専用ファイル グループを復元します。 最初の段階では、データベース全体がオフラインである必要があります。 初期ステージの後、データベースはオンラインになり、復元されたファイル グループを使用できるようになります。 ただし、まだ復元されていない読み取り専用のファイル グループはオフラインのままです。
初期段階の最初の RESTORE ステートメントでは、次の操作を行う必要があります。
プライマリ ファイル グループと、バックアップ時に読み取り/書き込みがあったすべてのファイル グループを含むデータベースの一部または完全バックアップを使用します。 一般的に、部分バックアップを復元して部分復元シーケンスを開始します。
部分復元の開始を示す PARTIAL オプションを指定します。
注
PARTIAL オプションは、結果として得られるデータベースが実稼働データベースとして使用するために適していることを確認する安全チェックを実行します。
- バックアップがデータベースの完全バックアップである場合は、READ_WRITE_FILEGROUPS オプションを指定します。
データベースがオンラインの間は、1 つ以上のオンライン ファイル復元を使用して、バックアップ時に読み取り専用だったオフラインの読み取り専用ファイルを復元および回復できます。 オンライン ファイルの復元のタイミングは、データをオンラインにするタイミングによって異なります。
ファイルにデータを復元する必要があるかどうかは、次によって異なります。
データベースと一致する有効な読み取り専用ファイルは、データを復元せずに復元することで、直接オンラインにすることができます。
破損しているファイルやデータベースと矛盾しているファイルは、復元する前に復元する必要があります。
例示
完全復旧モデルでの段階的な部分復元
完全復旧モデルまたは一括ログ復旧モデルでは、複数のファイル グループを含む任意のデータベースに対して段階的な部分復元を使用でき、任意の時点にデータベースを復元できます。 段階的な部分復元の復元シーケンスは、次のように動作します。
部分復元シーケンス
部分復元シーケンスは、プライマリ ファイル グループと、必要に応じて一部のセカンダリ ファイル グループを復元します。
最初の RESTORE DATABASE ステートメントでは、次の操作を行う必要があります。
PARTIAL オプションを指定します。 これは、段階的な部分復元の開始を示します。
プライマリ ファイル グループを含むデータベースの完全バックアップを使用します。 一般的な方法は、部分バックアップを復元して部分復元シーケンスを開始することです。
特定の時点に復元するには、部分復元シーケンスで時刻を指定する必要があります。 復元シーケンスのすべてのステップで、同じ時点を指定する必要があります。
ファイル グループの復元シーケンスでは、データベースと一致するポイントに追加のファイル グループがオンラインになります。
Enterprise エディションでは、データベースがオンラインのままである間、オフラインのセカンダリ ファイル グループを復元および復旧できます。 特定の読み取り専用ファイルが破損せず、データベースと一貫性がある場合、ファイルを復元する必要はありません。 詳細については、「データを復元しないデータベースの復旧 (Transact-SQL)」を参照してください。
ログ バックアップの適用
ファイル バックアップが作成される前から読み取り専用ファイル グループが読み取り専用になっている場合、ファイル グループへのログ バックアップの適用は不要であり、ファイルの復元ではスキップされます。 ファイル グループが読み取り/書き込みの場合、ファイル グループを現在のログ ファイルに転送するには、最後の完全復元または差分復元に、切り分けのないログ バックアップ チェーンを適用する必要があります。
例示
復旧モデルが単純から完全に切り替えられたデータベースの段階的な部分復元の実行
完全な部分バックアップまたはデータベース バックアップ以降に、単純復旧モデルから完全復旧モデルに切り替えられたデータベースの段階的な部分復元を実行できます。 たとえば、次の手順を実行するデータベースを考えてみましょう。
単純モデル データベースの部分バックアップ (backup_1) を作成します。
しばらくしてから、復旧モデルを完全に変更します。
差分バックアップを作成します。
ログ バックアップの作成を開始します。
その後、次のシーケンスが有効になります。
一部のセカンダリ ファイル グループを省略する部分復元。
差分復元の後、他に必要な復元作業を行います。
その後、backup_1部分バックアップからの読み書き可能なセカンダリファイルグループのファイルをリカバリなしで復元します。
差分バックアップの後に、元の部分復元シーケンスで復元されたその他のバックアップを使用して、元の復旧ポイントまでデータを復元します。
こちらもご覧ください
トランザクション ログ バックアップの適用 (SQL Server)
RESTORE (Transact-SQL)
SQL Server データベースを特定の時点に復元する (完全復旧モデル)
復元と復旧の概要 (SQL Server)
復元シーケンスの計画と実行 (完全復旧モデル)