ログ末尾のバックアップ

更新 : 2006 年 7 月 17 日

青いデータベース ディスクを示すアイコン このトピックは、完全復旧モデルまたは一括ログ復旧モデルを使用するデータベースのみに関連しています。

SQL Server 2005 で完全復旧モデルまたは一括ログ復旧モデルを使用するほとんどの場合、まだバックアップされていないログ レコードをキャプチャするため、ログの末尾をバックアップする必要があります。復元操作直前のログの末尾から取ったログ バックアップをログ末尾のバックアップといいます。

SQL Server 2005 では通常、データベースの復元を開始する前に、ログ末尾のバックアップを取る必要があります。ログ末尾のバックアップを取ることで、作業の損失を防ぎ、ログ チェーンを完全な状態で保持することができます。データベースを障害発生時点に復旧するとき、ログ末尾のバックアップは復旧計画の対象になる最後のバックアップです。ログの末尾をバックアップできない場合、障害の前に作成した最後のバックアップの末尾までしかデータベースを復旧できません。

ログ末尾のバックアップは、すべての復元シナリオで必要となるわけではありません。復元ポイントが以前のログ バックアップに含まれている場合、またはデータベースを移動するか置き換えて (上書きして) いる場合、ログ末尾のバックアップは不要です。また、ログ ファイルが破損し、ログ末尾のバックアップを作成できない場合、ログ末尾のバックアップを使用することなくデータベースを復元する必要があります。最新のログ バックアップの後にコミットされたトランザクションは失われます。詳細については、後の「ログ末尾のバックアップを使用しない復元」を参照してください。

ログの末尾のバックアップ

他のログ バックアップと同様、ログ末尾のバックアップを取るには BACKUP LOG ステートメントを使用します。以下に示す状況では、ログ末尾のバックアップをお勧めします。

  • データベースがオンラインで、復元シーケンスを開始する前であれば、データベースに復元操作を実行する直前に WITH NORECOVERY を使用してログの末尾をバックアップします。
    BACKUP LOG database_name TO <backup_device> WITH NORECOVERY
    ms179314.note(ja-jp,SQL.90).gifメモ :
    エラーを回避するため、NORECOVERY オプションを必ず指定します。
  • データベースがオフラインであり、開始していない場合。
    ログ末尾のバックアップを行います。このとき、トランザクションは発生しないので、WITH NORECOVERY の指定は省略できます。データベースが破損している場合、WITH CONTINUE_AFTER_ERROR または WITH NO_TRUNCATE のいずれかを使用します。
    BACKUP LOG database_name TO <backup_device> [WITH { CONTINUE_AFTER_ERROR | NO_TRUNCATE }
    ms179314.note(ja-jp,SQL.90).gif重要 :
    データベースが破損している場合を除き、NO_TRUNCATE を使用しないことをお勧めします。
    データベースが破損しているなどの理由でデータベースが起動しない場合、ログ末尾のバックアップが成功するのは、ログ ファイルが破損しておらず、データベースがログ末尾のバックアップをサポートしている状態であり、一括ログ記録された変更がデータベースに含まれていない場合に限られます。

次の表に、これらのオプションを要約します。

BACKUP LOG オプション

コメント

NORECOVERY

データベースの復元操作を続行する場合は、必ず NORECOVERY を使用します。NORECOVERY を指定すると、データベースは復元中の状態になります。これにより、ログ末尾のバックアップの後にデータベースが変化しないことが保障されます。

これと併せて、NO_TRUNCATE オプションまたは COPY_ONLY オプションを指定しない限り、ログは切り捨てられます。

{ CONTINUE_AFTER_ERROR | NO_TRUNCATE }

破損したデータベースの末尾をバックアップする場合に限り、NO_TRUNCATE または CONTINUE_AFTER_ERROR を使用します。

ms179314.note(ja-jp,SQL.90).gifメモ :

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

データベースが損傷したときにトランザクション ログのバックアップを作成するには

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

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

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

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

  • backup_set_id
  • filegroup_id
  • type
  • type_desc
  • is_readonly

ログ末尾のバックアップを使用しない復元

ログ末尾のバックアップを必要としない復元シナリオには、次のものがあります。

  • 前のログ バックアップ内のある時点にデータベースを復元する。
    データベースを復元するときに、復元シーケンスのすべての RESTORE ステートメントで STOPAT、STOPATMARK、STOPBEFOREMARK のいずれかのオプションを指定する場合、ログ末尾のバックアップは不要です。
    前の時点にデータベースを復元するには
  • データベースのコピーを新しい場所に復元する。
    データベースを復元するときに、別のサーバー インスタンスにデータベースを復元する場合に限り、同じデータベース名を使用できます。たとえば、データベース ミラーリング用のミラー データベースや、ログ配布用のセカンダリ データベースを作成する場合です。同一のサーバー インスタンス上でデータベースを移動する場合、そのデータベースには新しい名前を指定する必要があります。
    データベースを新しい場所に復元するには
  • データベースを完全に置き換える (上書きする)。
    ms179314.Caution(ja-jp,SQL.90).gif注意 :
    REPLACE オプションを使用した復元はほとんど使用されることはなく、熟練したデータベース管理者だけが十分な検討を経て使用するものです。詳細については、「REPLACE オプションの使用」を参照してください。
    **データベースを置き換えるには** - Transact-SQL を使用して、[RESTORE](ms186858\(v=sql.90\).md) ステートメントで REPLACE オプションを指定します。 - SQL Server Management Studio を使用して、**\[データベースの復元\]** (**\[オプション\]** ページ) の **\[復元先\]** で、各ファイルの新しい場所を指定します。詳細については、「[データベースのバックアップを復元する方法 (SQL Server Management Studio)](ms177429\(v=sql.90\).md)」を参照してください。

参照

概念

コピーのみのバックアップ
データベースの状態
トランザクション ログ バックアップの適用
トランザクション ログ バックアップの作成

その他の技術情報

BACKUP (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

新しい内容 :
  • ログ末尾のバックアップを使用しない場合の説明を、独立した「ログ末尾のバックアップを使用しない復元」で詳しく記述しました。
変更内容 :
  • 「ログの末尾のバックアップ」を更新しました。