ログ シーケンス番号 (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