ログ末尾のバックアップ (SQL Server)

適用対象: SQL Server

この記事は、完全復旧モデルまたは一括ログ復旧モデルを使用する SQL Server データベースのバックアップと復元のみに関連しています。

ログ末尾のバックアップ では、まだバックアップされていないすべてのログ レコード (ログの末尾) をキャプチャし、作業内容の消失を防ぐとともにログ チェーンの完全性を維持できます。 SQL Server データベースをその最新の時点まで復元するには、トランザクション ログの末尾をあらかじめバックアップしておく必要があります。 ログ末尾のバックアップは、データベースの復旧プランの対象になる最後のバックアップです。

ログ末尾のバックアップは、すべての復元シナリオで必要となるわけではありません。 復旧ポイントがそれより前のログ バックアップに含まれている場合、ログ末尾のバックアップは不要です。 また、データベースを移動しているか置き換えて (上書きして) いる場合、ログ末尾のバックアップは不要です。最新のバックアップ以降の特定の時点に復元する必要もありません。

ログ末尾のバックアップが必要となるシナリオ

以下に示すシナリオでは、ログ末尾のバックアップをお勧めします。

  • データベースがオンライン状態であり、データベースに対して復元操作を実行する予定がある場合に、ログ末尾のバックアップを最初に行う。 オンライン データベースのエラーを回避するには、BACKUP Transact-SQL ステートメントの WITH NORECOVERY オプションを使用する必要があります。

  • データベースがオフラインで起動できず、データベースを復元する必要がある場合に、まずログの末尾をバックアップする。 このときトランザクションは発生しないので、WITH NO_TRUNCATE オプションの指定は省略できます。 NO_TRUNCATE は、コピーのみのトランザクション ログ バックアップと実質的に同じです。 このときトランザクションは発生しないので、WITH NORECOVERY の使用はオプションです。

  • データベースが破損した場合に、BACKUP ステートメントの WITH CONTINUE_AFTER_ERROR オプションを使用してログ末尾のバックアップを試す。

    破損しているデータベースでログ末尾のバックアップが成功するのは、ログ ファイルが破損しておらず、データベースがログ末尾のバックアップをサポートしている状態で、一括ログ記録された変更がデータベースに含まれていない場合に限られます。 ログ末尾のバックアップを作成できない場合、最新のログ バックアップの後にコミットされたトランザクションはすべて失われます。

以下の表では、BACKUPNORECOVERYNO_TRUNCATECONTINUE_AFTER_ERROR オプションをまとめます。

BACKUP LOG オプション Comments
NORECOVERY データベースの復元操作を続行する場合は、必ず NORECOVERY を使用します。 NORECOVERY を指定すると、データベースは復元中の状態になります。 この手順により、ログ末尾のバックアップの後にデータベースが変化しないことが保証されます。 これと併せて、NO_TRUNCATE オプションまたは COPY_ONLY オプションを指定しない限り、ログは切り捨てられます。

重要: データベースが破損している、またはオフラインである場合を除き、NO_TRUNCATE を使用しないでください。 NORECOVERY で復元を実行する前に排他アクセスを取得するには、データベースをシングル ユーザー モードにしなければならない場合があります。 復元後、データベースをマルチユーザー モードに戻します。
CONTINUE_AFTER_ERROR 破損したデータベースの末尾をバックアップする場合に限り、CONTINUE_AFTER_ERROR を使用します。

破損したデータベースにログ末尾をバックアップする場合、通常であればログ バックアップにキャプチャされるメタデータの一部を使用できない場合があります。 詳細については、次のセクションを参照してください。

不完全なバックアップ メタデータが含まれたログ末尾のバックアップ

データベースがオフラインである場合、データベースが破損している場合、またはデータ ファイルが欠落している場合でも、ログ末尾のバックアップではログの末尾がキャプチャされます。 これが原因で、復元情報コマンドや msdb のメタデータが不完全になる場合があります。 ただし、メタデータが不完全なだけで、キャプチャされたログは完全であり、使用できます。

ログ末尾のバックアップに不完全なメタデータが含まれている場合は、 backupset テーブルで has_incomplete_metadata1 に設定されます。 また、RESTORE HEADERONLY の出力で HasIncompleteMetadata1 に設定されます。

ログ末尾のバックアップのメタデータが不完全な場合、ログ末尾のバックアップ時に、ファイル グループに関する情報の大部分が backupfilegroup テーブルから欠落します。 backupfilegroup テーブルのほとんどの列は NULL で、意味を持つ列は次の列のみです。

  • backup_set_id
  • filegroup_id
  • type
  • type_desc
  • is_readonly

関連タスク

ログ末尾のバックアップを作成するには、「データベースが破損したときのトランザクション ログのバックアップ (SQL Server)」をご覧ください。

トランザクション ログ バックアップを復元するには、「トランザクション ログ バックアップの復元 (SQL Server)」をご覧ください。