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

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

ログ シーケンス番号 (LSN) を使用して、復元操作の復旧ポイントを定義できます。 ただし、この機能はツール ベンダーを対象としたものであり、一般的には、あまり有益ではない場合があります。

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

LSN は、RESTORE シーケンス中に、データを復元する時点を追跡するために内部で使用されます。 バックアップを復元するときに、データはバックアップが実行された時点に対応する LSN まで復元されます。 差分バックアップとログ バックアップの場合、復元されるデータベースは LSN が大きい方、つまり、より後の時点に向かって進められます。

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

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

注意

LSN は、データ型 numeric(25,0) の値です。 算術演算 (加算や減算など) は、意味が無いので LSN では行わないでください。

[先頭に戻る]

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

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

注意

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

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

RESTORE ステートメントを使用して、次のように LSN または 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

関連タスク

関連項目

参照

RESTORE (Transact-SQL)

概念

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

トランザクション ログ (SQL Server)