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

適用対象:SQL Server

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

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

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

LSN は、RESTORE シーケンス中に、データを復元する時点を追跡するために内部で使用されます。 バックアップを復元するときに、データはバックアップが実行された時点に対応する LSN まで復元されます。 差分バックアップとログ バックアップの場合、復元されるデータベースは LSN が大きい方、つまり、より後の時点に向かって進められます。 LSN の詳細については、「SQL Server トランザクション ログのアーキテクチャと管理ガイド」を参照してください。

注意

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  

Related Tasks

参照

トランザクション ログ バックアップの適用 (SQL Server)
トランザクション ログ (SQL Server)
RESTORE (Transact-SQL)
復元と復旧の概要 (SQL Server)
SQL Server トランザクション ログのアーキテクチャと管理ガイド