次の方法で共有


ログ シーケンス番号への復旧 (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)