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

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

SQL Server 2005 以降のバージョンでは、ログ シーケンス番号 (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 までロールフォワードされますが、指定されたログ レコードはロールフォワードから除外されます。

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

LSN の使用方法の詳細については、「ログ シーケンス番号と復元プラン」を参照してください。

特定の時点への復元の詳細については、「バックアップ内の特定の時点へのデータベースの復元」を参照してください。

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

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

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