オンライン復元の実行

オンライン復元は、SQL Server 2005 Enterprise Edition 以降のバージョンでのみサポートされます。このエディションの既定で、ファイル復元、ページ復元、または段階的な部分復元はオンラインで行われます。

 このトピックの内容は、複数のファイルまたはファイル グループを含むデータベース (単純復旧モデルでは、読み取り専用ファイル グループのみ) に関連しています。

データベースがオンラインのときにデータを復元する処理をオンライン復元といいます。プライマリ ファイル グループがオンラインの場合、1 つ以上のセカンダリ ファイル グループがオフラインでも、そのデータベースはオンラインと見なされます。どの復旧モデルでも、データベースがオンラインであれば、オフラインのファイルを復元できます。完全復旧モデルでは、データベースがオンラインであれば、ページも復元できます。

注意

SQL Server 2005 Enterprise Edition 以降のバージョンではオンライン復元が自動的に実行されるので、ユーザーが操作を行う必要はありません。オンライン復元を使用しない場合は、復元を開始する前にデータベースをオフラインにできます。詳細については、このトピックの「データベースまたはファイルのオフライン化」を参照してください。

オンライン ファイル復元では、復元するファイルとそのファイル グループがオフラインになります。オンライン復元を開始するときに、復元するいずれかのファイルがオンラインの場合、そのファイルのファイル グループは最初の復元ステートメントによってオフラインになります。一方、オンラインのページ復元では、ページのみがオフラインになります。

オンライン復元シナリオには、次の基本的な手順が含まれます。

  1. データを復元します。

  2. 最後のログの復元に WITH RECOVERY を使用します。この操作により、復元したデータがオンラインになります。

場合によっては、ロールバックに必要なデータが起動時にオフラインになっているために、コミットされていないトランザクションをロールバックできないことがあります。このような場合は、トランザクションの処理が遅延されます。詳細については、「遅延トランザクション」を参照してください。

注意

データベースで一括ログ復旧モデルを使用している場合は、完全復旧モデルに切り替えてからオンライン復元を開始することをお勧めします。詳細については、「完全復旧モデルまたは一括ログ復旧モデルからの切り替え」を参照してください。

重要な注意事項重要

サーバーに接続された複数のデバイス使用してバックアップを行った場合は、オンライン復元時に同じ数のデバイスを使用できるようにしておく必要があります。

オンライン復元のログ バックアップ

オンライン復元の場合、復旧ポイントとは、復元しているデータがオフラインになった時点、または前回読み取り専用に設定された時点です。復旧ポイントに至るまでのトランザクション ログ バックアップ、およびこの復旧ポイントを含むトランザクション ログ バックアップが、すべて使用可能になっている必要があります。通常、ファイルの復旧ポイントに対応するには、復旧ポイント以降のログ バックアップが必要です。唯一の例外は、データが読み取り専用になった後に作成されたデータ バックアップから、読み取り専用データのオンライン復元を実行する場合です。この場合、ログ バックアップは必要ありません。

通常、データベースがオンラインの間は、復元シーケンスを開始した後でも、トランザクション ログ バックアップを実行できます。最後のログ バックアップのタイミングは、復元されるファイルのプロパティによって異なります。

  • 読み取り専用のオンライン ファイルの場合、最初の復元シーケンスの前または最中に、復旧に必要な最後のログ バックアップを実行できます。読み取り専用ファイル グループでは、ファイル グループが読み取り専用になった後にデータ バックアップまたは差分バックアップが実行された場合、ログ バックアップは不要です。

    注意

    上記の情報は、オフライン ファイルにも当てはまります。

  • 最初の復元ステートメントが実行された時点でオンラインになっていた読み取りと書き込みが可能なファイル、またはその復元ステートメントで自動的にオフラインになった読み取りと書き込みが可能なファイルは、特殊なケースです。この場合、最初の復元シーケンス (復元、ロールフォワード、およびデータの復旧を行う、1 つ以上の RESTORE ステートメントのシーケンス) の間にログ バックアップを実行する必要があります。通常、このログ バックアップは、すべての完全バックアップの復元後かつデータ復旧の前に行われる必要があります。ただし、特定のファイル グループに対して複数のファイル バックアップが存在する場合、ログ バックアップの最小復旧ポイントはそのファイル グループがオフラインになった後の時点になります。このデータ復元後のログ バックアップにより、ファイルがオフラインになった時点がキャプチャされます。SQL Server データベース エンジンではオンライン復元のオンライン ログを使用できないので、データ復元後のログ バックアップが必要です。

    注意

    または、復元シーケンスの前に手動でファイルをオフラインにすることもできます。詳細については、このトピックの「データベースまたはファイルのオフライン化」を参照してください。

データベースまたはファイルのオフライン化

オンライン復元を使用しない場合、次のいずれかの方法で、復元シーケンスを開始する前にデータベースをオフラインにできます。

  • どの復旧モデルでも、次の ALTER DATABASE ステートメントを使用することにより、データベースをオフラインにできます。

    ALTER DATABASE database_name SET OFFLINE

  • 完全復旧モデルでは、次の BACKUP LOG ステートメントを使用してデータベースを復元状態にすることにより、ファイル復元またはページ復元を強制的にオフラインで実行することができます。

    BACKUP LOG database_name WITH NORECOVERY

データベースがオフライン状態の間、すべての復元処理はオフライン復元になります。