次の方法で共有


Tail-Log バックアップ (SQL Server)

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

ログ末尾のバックアップでは、まだバックアップされていないログ レコード (ログの末尾) をキャプチャして、作業の損失を防ぎ、ログ チェーンをそのまま保持します。 SQL Server データベースを最新の時点に復旧する前に、トランザクション ログの末尾をバックアップする必要があります。 ログ末尾のバックアップは、データベースの復旧計画の最後のバックアップになります。

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

Tail-Log バックアップが必要なシナリオ

次のシナリオでは、ログ末尾のバックアップを作成することをお勧めします。

  • データベースがオンラインで、データベースに対して復元操作を実行する予定の場合は、まずログの末尾をバックアップします。 オンラインデータベースでエラーを回避するためには、BACKUPTransact-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は使用しないことをお勧めします。
エラー後に続行 CONTINUE_AFTER_ERRORは、破損したデータベースの末尾をバックアップする場合にのみ使用します。

注: 破損したデータベースでログの末尾をバックアップすると、通常ログ バックアップでキャプチャされるメタデータの一部が使用できなくなる可能性があります。 詳細については、このトピックの「不完全なバックアップ メタデータを持つバックアップ」(Tail-Log)を参照してください。

Tail-Log 不完全なバックアップメタデータを持つバックアップ

ログ末尾のバックアップでは、データベースがオフライン、破損、またはデータ ファイルがない場合でも、ログの末尾がキャプチャされます。 これにより、復元情報コマンドと msdb からの不完全なメタデータが発生する可能性があります。 ただし、メタデータのみが不完全です。キャプチャされたログは完全で使用可能です。

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

ログ末尾のバックアップのメタデータが不完全な場合、ログ末尾のバックアップ時に 、backupfilegroup テーブルにファイル グループに関するほとんどの情報が見つかりません。 ほとんどの backupfilegroup テーブル列は NULL です。意味のある列は次のとおりです。

  • バックアップセットID

  • filegroup_id

  • タイプ

  • type_desc

  • is_readonly

関連タスク

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

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

こちらもご覧ください

BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
SQL Server データベースのバックアップと復元
コピーのみのバックアップ (SQL Server)
トランザクション ログ バックアップ (SQL Server)
トランザクション ログ バックアップの適用 (SQL Server)