次の方法で共有


ログ シーケンス番号への復旧 (SQL Server)

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

ログ シーケンス番号 (LSN) を使用して、復元操作の復旧ポイントを定義できます。 ただし、これはツール ベンダー向けの特殊な機能であり、一般的に役立つ可能性は低いです。

ログ シーケンス番号の概要

LSN は、RESTORE シーケンス中に内部的に使用され、データが復元された時点を追跡します。 バックアップが復元されると、バックアップが作成された時点に対応するデータが LSN に復元されます。 差分バックアップとログ バックアップは、復元されたデータベースを後で進めます。これは、上位の LSN に対応します。

トランザクション ログ内のすべてのレコードは、ログ シーケンス番号 (LSN) によって一意に識別されます。 LSN2 が LSN1 より大きい場合、LSN2 によって参照されるログ・レコードによって記述された変更は、ログ・レコード LSN によって記述された変更の後に発生するように順序付けられます。

重大なイベントが発生したログ レコードの LSN は、正しい復元シーケンスを構築するのに役立ちます。 LSN は順序付けされているため、等値と不等値 (つまり、 <>=<=>= ) を比較できます。 このような比較は、復元シーケンスを構築するときに便利です。

LSN は、データ型 numeric(25,0) の値です。 算術演算 (加算や減算など) は意味を持たず、LSN では使用できません。

バックアップと復元で使用される LSN の表示

特定のバックアップおよび復元イベントが発生したログ レコードの LSN は、次の 1 つ以上を使用して表示できます。

LSN は、一部のメッセージ テキストにも表示されます。

LSN に復元するための Transact-SQL 構文

RESTORE ステートメントを使用すると、次のように LSN の直前または直前に停止できます。

  • WITH STOPATMARK ='lsn:<lsn_number>' 句を使用します。ここで、lsn:<lsnNumber> は、指定した LSN を含むログ レコードが復旧ポイントであることを指定する文字列です。

    STOPATMARK は LSN までロールフォワードし、そのログレコードもロールフォワード状態に含めます。

  • WITH STOPBEFOREMARK ='lsn:<lsn_number>' 句を使用します。ここで、lsn:<lsnNumber> は、指定した LSN 番号を含むログ レコードの直前のログ レコードが復旧ポイントであることを指定する文字列です。

    STOPBEFOREMARK は LSN にロール フォワードし、ロール フォワードからそのログ レコードを除外します。

通常、特定のトランザクションが含まれるか除外されるように選択されます。 必須ではありませんが、実際には、指定されたログ レコードはトランザクション コミット レコードです。

例示

次の例では、完全復旧モデルを使用するように AdventureWorks データベースが変更されていることを前提としています。

RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak'   
WITH STOPATMARK = 'lsn:15000000040000037'  
GO  

関連タスク

こちらもご覧ください

トランザクション ログ バックアップの適用 (SQL Server)
トランザクション ログ (SQL Server)
RESTORE (Transact-SQL)