段階的な部分復元の実行

このトピックの内容は、複数のファイルまたはファイル グループ (単純復旧モデルでは、読み取り専用ファイル グループのみ) を含む SQL Server 2005 Enterprise Edition 以降のバージョンのデータベースだけに関するものです。

SQL Server 2005 以降のバージョンでは、複数のファイル グループを含むデータベースを、段階的な部分復元という処理によって段階的に復元および復旧できます。段階的な部分復元には、プライマリ ファイル グループから始まり、場合によっては 1 つ以上のセカンダリ ファイル グループを復元するための、一連の復元シーケンスが含まれています。復元シーケンスの完了後、復元されたファイルは (これらのファイルが有効で、データベースとの一貫性があれば) 直接オンラインにできます。

段階的な部分復元は、すべての復旧モデルで使用できますが、単純復旧モデルよりも完全復旧モデルと一括ログ復旧モデルの方がより柔軟に実行できます。

注意

段階的な部分復元では、復元されなかったファイル グループを後から復元できるため、SQL Server 2000 の部分復元に比べて多目的に使用できます。

すべての段階的な部分復元は、部分復元シーケンスと呼ばれる初期復元シーケンスから始まります。最小限の部分復元シーケンスでは、プライマリ ファイル グループが復元および復旧されます。単純な復旧モデルでは、すべての読み取り/書き込みファイル グループが復元および復旧されます。段階的な部分復元シーケンスの間は、データベース全体をオフラインにする必要があります。その後、データベースをオンラインにすると、復元されたファイル グループが使用可能になります。ただし、まだ復元されていないファイル グループは、オフライン状態のままになります。

データベースに使用されている復旧モデルにかかわらず、部分復元シーケンスは、完全バックアップを復元する RESTORE DATABASE ステートメントと PARTIAL オプションから始まります。PARTIAL オプションを指定すると、常に新しい段階的な部分復元が開始されます。このため、PARTIAL オプションは部分復元シーケンスの最初のステートメントに 1 回だけ指定します。この部分復元シーケンスが完了し、データベースがオンラインになると、残りのファイルの状態が "復旧待ち" になります。これは、残りのファイルの復旧が延期されているためです。

段階的な部分復元のこの後の部分には、通常、ファイル グループ復元シーケンスと呼ばれる 1 つ以上の復元シーケンスがあります。特定のファイル グループ復元シーケンスは、必要な時間待機させることができます。各ファイル グループ復元シーケンスでは、1 つ以上のオフラインのファイル グループを、データベースの一貫性がある時点に復元および復旧します。ファイル グループ復元シーケンスのタイミングと数は、復旧の目的、つまり復旧するオフライン ファイル グループの数、および 1 回のファイル グループ復元シーケンスで復元するファイル グループの数によって異なります。

実行する段階的な部分復元の正確な要件は、データベースの復旧モデルによって異なります。詳細については、後の「単純復旧モデルでの段階的な部分復元」および「完全復旧モデルでの段階的な部分復元」を参照してください。

段階的な部分復元のシナリオ

SQL Server ではすべてのエディションで、オフラインの段階的な部分復元がサポートされます。SQL Server 2005 Enterprise Edition 以降のバージョンでは、段階的な部分復元をオンラインでもオフラインでも実行できます。オフラインとオンラインの段階的な部分復元の影響を以下に示します。

  • オフラインの段階的な部分復元のシナリオ

    オフラインの段階的な部分復元では、部分復元シーケンスの実行後にデータベースがオンラインになります。復元されていないファイル グループはオフラインのままになりますが、データベースをオフラインにすれば、必要に応じて復元できます。

  • オンラインの段階的な部分復元のシナリオ

    オンラインの段階的な部分復元シナリオでは、部分復元シーケンスの実行後にデータベースがオンラインになり、プライマリ ファイル グループと復旧されたすべてのセカンダリ ファイル グループが使用可能になります。復元されていないファイル グループはオフラインのままになりますが、データベースがオンラインの状態であれば、その間に必要に応じて復元できます。

    オンラインの段階的な部分復元では遅延トランザクションを実行できます。ファイル グループのサブセットだけが復元された場合、データベース内のトランザンションの中でオンライン ファイル グループに依存するものは遅延される場合があります。これは、データベース全体の一貫性を保つための一般的な動作です。詳細については、「遅延トランザクション」を参照してください。

制限事項

部分復元シーケンスで FILESTREAM ファイル グループを除外した場合、特定の時点への復元はサポートされません。復元シーケンスを強制的に実行して続行することもできます。ただし、RESTORE ステートメントから除外された FILESTREAM ファイル グループは復元できません。特定の時点への復元を強制的に実行するには、STOPAT、STOPATMARK、または STOPBEFOREMARK オプションに CONTINUE_AFTER_ERROR オプションを組み合わせて指定します。これらのオプションは、後続の RESTORE LOG ステートメントでも指定する必要があります。CONTINUE_AFTER_ERROR を指定した場合、部分復元シーケンスは正常に実行されますが、FILESTREAM ファイル グループは復元できなくなります。

単純復旧モデルでの段階的な部分復元

単純復旧モデルでは、データベースの完全バックアップまたは差分バックアップから段階的な部分復元シーケンスを始める必要があります。その後、復元されたバックアップが差分ベースであれば、最新の差分バックアップを復元します。

最初の部分復元シーケンスの間に読み取り/書き込みファイル グループのサブセットだけを復元した場合、部分的に復元されたデータベースを復旧すると、復元されていないファイル グループはすべて機能しなくなります。部分復元シーケンスから読み取り/書き込みファイル グループを除くことが適切なのは、次の場合に限られます。

  • 復元されないファイル グループを意図的に機能しないようにする場合。

  • 部分復元シーケンスの前の復元中に、復元されていない各ファイル グループが、読み取り専用、削除済み、または機能しない状態になっている復旧ポイントに復元シーケンスが到達する場合。

  • データベースに対して単純復旧モデルを使用している期間中に完全バックアップを行ったが、完全復旧モデルを使用している時点に復旧ポイントがある場合。詳細については、後の「復旧モデルを単純から完全に切り替えたデータベースの段階的な部分復元の実行」を参照してください。

単純復旧モデルでの段階的な部分復元の要件

単純復旧モデルでは、初期段階でプライマリ ファイル グループと、すべての読み取り/書き込みセカンダリ ファイル グループが復元および復旧されます。初期段階の完了後、復元されたファイルは (これらのファイルが有効で、データベースとの一貫性があれば) 直接オンラインにできます。

その後、読み取り専用のファイル グループが 1 回以上の追加段階で復元されます。

読み取り専用のセカンダリ ファイル グループの段階的な部分復元は、次の条件が満たされた場合に限り可能になります。

  • バックアップ時に読み取り専用だったこと。

  • 読み取り専用のままであること (プライマリ ファイル グループと論理的に一貫性があること)。

段階的な部分復元を実行する場合、次のガイドラインに従ってください。

  • 単純復旧モデルのデータベースに対する段階的な部分復元では、完全なバックアップ セットに次のバックアップが必要です。

    • プライマリ ファイル グループと、バックアップ時に読み取りと書き込みが可能だったすべてのファイル グループを含んでいる、データベースの部分バックアップまたは完全バックアップ。

    • 各読み取り専用ファイルのバックアップ。

  • 読み取り専用ファイルのバックアップとプライマリ ファイル グループに一貫性がある場合、セカンダリ ファイル グループがバックアップされ、プライマリ ファイル グループを含んでいるバックアップが完了するまでの間、そのセカンダリ ファイル グループは読み取り専用である必要があります。セカンダリ ファイル グループが読み取り専用になった後でバックアップを作成した場合は、ファイルの差分バックアップを使用できます。

段階的な部分復元の各段階 (単純復旧モデル)

段階的な部分復元シナリオには、次の段階があります。

  • 初期段階 (プライマリ ファイル グループとすべての読み取り/書き込みファイル グループを復元および復旧します)。

    初期段階では部分復元が実行されます。この部分復元シーケンスでは、プライマリ ファイル グループとすべての読み取り/書き込みセカンダリ ファイル グループ、および必要に応じて、一部の読み取り専用ファイル グループが復元されます。初期段階では、データベース全体をオフライン状態にする必要があります。初期段階後は、データベースがオンラインになり、復元されたファイル グループが利用可能になります。ただし、復元されていない読み取り専用ファイル グループは、オフラインのままです。

    初期段階の最初の RESTORE ステートメントでは、以下の手順を実行する必要があります。

    • プライマリ ファイル グループとバックアップ時点で読み取りと書き込みが可能だったすべてのファイル グループを含む、データベースの部分バックアップまたはデータベースの完全バックアップを使用します。通常は、部分バックアップを復元することで、部分復元シーケンスを開始します。

    • 段階的な部分復元の開始を指定する PARTIAL オプションを指定します。

    注意

    段階的な部分復元の初期段階は、SQL Server 2000 のデータベースの部分復元に代わるものです。SQL Server 2005 以降のバージョンでは、データベースの部分復元では省略された安全性チェックが、PARTIAL オプションによって実行されます。これにより、復元後のデータベースを運用データベースとして適切に使用できます。

    • バックアップがデータベースの完全バックアップである場合は、READ_WRITE_FILEGROUPS オプションを指定します。
  • データベースがオンラインの間、1 つ以上のオンライン ファイルの復元を使用して、バックアップ時点で読み取り専用であったオフラインの読み取り専用ファイルを復元および復旧できます。オンライン ファイルの復元のタイミングは、データをオンラインにするタイミングによって異なります。

    データをファイルに復元する必要があるかどうかは次の要因によって決まります。

    • データベースとの一貫性がある有効な読み取り専用ファイルは、データの復元は一切行わずに、ファイルを復旧することで直接オンラインにできます。

    • 損傷しているファイルや、データベースと一貫性のないファイルは、復旧する前に復元する必要があります。

完全復旧モデルでの段階的な部分復元

完全復旧モデルまたは一括ログ復旧モデルでは、複数のファイル グループを含むすべてのデータベースで段階的な部分復元を実行でき、データベースを任意の時点に復元できます。段階的な部分復元の復元シーケンスは、次のように行われます。

  • 部分復元シーケンス

    この部分復元シーケンスでは、プライマリ ファイル グループと、必要に応じて、一部のセカンダリ ファイル グループが復元されます。

    最初の RESTORE DATABASE ステートメントでは次のことを行う必要があります。

    • PARTIAL オプションを指定します。これは段階的な部分復元を開始することを示します。

    • プライマリ ファイル グループを含むデータベースの完全バックアップを使用します。通常は、部分バックアップを復元することで、部分復元シーケンスを開始します。

    • 特定の時点に復元するには、部分復元シーケンスで時刻を指定する必要があります。復元シーケンスのその後のすべてのステップで、同じ時点を指定する必要があります。

  • ファイル グループ復元シーケンスではその他のファイル グループをデータベースと一貫性がある時点でオンラインにします。

    SQL Server 2005 Enterprise Edition 以降のバージョンでは、データベースをオンラインにしたまま、オフラインのセカンダリ ファイル グループを復元および復旧できます。特定の読み取り専用ファイルに損傷がなく、データベースと一貫性があれば、そのファイルを復元する必要はありません。詳細については、「データを復元せずにデータベースを復旧する方法」を参照してください。

ログ バックアップの適用

読み取り専用ファイル グループがバックアップの作成前から読み取り専用だった場合は、ログ バックアップをファイル グループに適用する必要はないので、ファイルの復元の際にスキップされます。読み取り/書き込みファイル グループの場合は、最新の完全復元または差分復元にチェーンが途切れていないログ バックアップを適用し、ファイル グループに現在のログ ファイルの状態を反映する必要があります。

復旧モデルを単純から完全に切り替えたデータベースの段階的な部分復元の実行

データベースの完全バックアップまたは部分バックアップ以降に単純復旧モデルから完全復旧モデルに切り替えたデータベースは、段階的な部分復元を実行できます。たとえば、データベースで次の手順を実行した場合を検討します。

  1. 単純モデルのデータベースの部分バックアップ (backup_1) を作成します。

  2. その後、復旧モデルを "完全" に変更します。

  3. 差分バックアップを作成します。

  4. ログ バックアップを開始します。

これ以降、次のシーケンスが有効です。

  1. 部分復元で一部のセカンダリ ファイル グループを省略する。

  2. 差分復元の後、その他の必要な復元を行う。

  3. 後で、WITH NORECOVERY を指定して backup_1 部分バックアップから読み取り/書き込みセカンダリ ファイル グループを復元する。

  4. 差分バックアップの後、元の段階的な部分復元でその他の復元を実行して、元の復旧ポイントまでデータを復元する。