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

適用対象:SQL Server (サポートされているすべてのバージョン)

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

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

注意

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

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

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

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

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

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

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

次の表は、BACKUP NORECOVERY と CONTINUE_AFTER_ERROR オプションをまとめたものです。

BACKUP LOG オプション 説明
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

Related Tasks

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

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

参照

BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
SQL Server データベースのバックアップと復元
コピーのみのバックアップ (SQL Server)
トランザクション ログのバックアップ (SQL Server)
トランザクション ログ バックアップの適用 (SQL Server)
SQL Server トランザクション ログのアーキテクチャと管理ガイド