このトピックは、マークされたトランザクションを含み、完全復旧モデルまたは一括ログ復旧モデルを使用するデータベースにのみ関連します。
特定の復旧ポイントに復元するための要件については、「特定の時点への SQL Server データベースの復元 (完全復旧モデル)」を参照してください。
SQL Server では、トランザクション ログへの名前付きマークの挿入がサポートされ、その特定のマークへの復旧が可能になります。 ログ マークはトランザクション固有であり、関連するトランザクションコミットの場合にのみ挿入されます。 その結果、マークを特定の作業に関連付けることができ、この作業を含めたり除外したりするポイントに回復できます。
トランザクション ログに名前付きマークを挿入する前に、次の点を考慮してください。
トランザクション マークはログ領域を消費するため、データベース復旧戦略で重要な役割を果たすトランザクションにのみ使用します。
マークされたトランザクションのコミット後、msdb の logmarkhistory テーブルに行が挿入されます。
マークされたトランザクションが、同じデータベース サーバー上または異なるサーバー上の複数のデータベースにまたがる場合は、影響を受けるすべてのデータベースのログにマークを記録する必要があります。 詳細については、「 マークされたトランザクションを使用して関連データベースを一貫して復旧する (完全復旧モデル)」を参照してください。
注
トランザクションをマークする方法については、「 マークされたトランザクションを使用して関連データベースを一貫して復旧する (完全復旧モデル)」を参照してください。
トランザクション ログに名前付きマークを挿入するための Transact-SQL 構文
トランザクション ログにマークを挿入するには、 BEGIN TRANSACTION ステートメントと WITH MARK [description] 句を使用します。 マークの名前はトランザクションと同じです。 省略可能な 説明 は、マーク名ではなく、マークのテキスト説明です。 たとえば、次の BEGIN TRANSACTION ステートメントで作成されるトランザクションとマークの両方の名前は Tx1。
BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'
トランザクション ログには、マーク名 (トランザクション名)、説明、データベース、ユーザー、 datetime 情報、ログ シーケンス番号 (LSN) が記録されます。
datetime情報はマーク名と共に使用され、マークを一意に識別します。
複数のデータベースにまたがるトランザクションにマークを挿入する方法については、「 マークされたトランザクションを使用して関連データベースを一貫して復旧する (完全復旧モデル)」を参照してください。
Transact-SQL マークへの復帰構文
RESTORE LOGステートメントを使用してマークされたトランザクションを対象とする場合は、次のいずれかの句を使用して、マークの直前または直前で停止できます。
WITH STOPATMARK = '
<mark_name>' 句を使用して、マークされたトランザクションが復旧ポイントであることを指定します。STOPATMARK はマークにロールフォワードし、マークされたトランザクションをロールフォワードに含めます。
WITH STOPBEFOREMARK = '
<mark_name>' 句を使用して、マークの直前のログ・レコードが回復ポイントであることを指定します。STOPBEFOREMARK は、指定されたマークまでロールフォワードした後、そのマークで指定されたトランザクションをロールフォワードから除外します。
STOPATMARK オプションと STOPBEFOREMARK オプションの両方で、オプションの AFTER datetime 句がサポートされます。 datetime を使用する場合、マーク名を一意にする必要はありません。
AFTER datetime を省略すると、指定した名前を持つ最初のマークでロールフォワードが停止します。 AFTER datetime が指定された場合、ロールフォワードは、指定された名前を持つ最初のマークが datetime ちょうどまたはその後に現れた時点で停止します。
注
すべてのポイントインタイム リストア操作と同様に、データベースが一括ログ記録される操作を実行している場合、マークへの復旧は許可されません。
マークされたトランザクションに復元するには
マークされたトランザクションへのデータベースの復元 (SQL Server Management Studio)
ログ バックアップの準備
この例では、これらの関連データベースに対する適切なバックアップ戦略を次に示します。
両方のデータベースに対して完全復旧モデルを使用します。
各データベースの完全バックアップを作成します。
データベースは、順番に、または同時にバックアップできます。
トランザクション ログをバックアップする前に、すべてのデータベースで実行されるトランザクションをマークします。 マークされたトランザクションを作成する方法については、「マークされたトランザクションを 使用して関連データベースを一貫して復旧する (完全復旧モデル)」を参照してください。
各データベースのトランザクション ログをバックアップします。
マークされたトランザクションへのデータベースの復旧
バックアップを復元するには
可能であれば、破損していないデータベースの ログ末尾バックアップ を作成します。
各データベースの最新のデータベースの完全バックアップを復元します。
すべてのトランザクション ログ バックアップで使用できる最新のマークされたトランザクションを特定します。 この情報は、各サーバーの msdb データベースの logmarkhistory テーブルに格納されます。
このマークを含むすべての関連データベースのログ バックアップを特定します。
マークされたトランザクションで停止して、各ログ バックアップを復元します。
各データベースを復旧します。
こちらもご覧ください
BEGIN TRANSACTION (Transact-SQL)
RESTORE (Transact-SQL)
トランザクション ログ バックアップの適用 (SQL Server)
マークされたトランザクションを使用して関連データベースを一貫して復旧する (完全復旧モデル)
復元と復旧の概要 (SQL Server)
SQL Server データベースを特定の時点に復元する (完全復旧モデル)
復元シーケンスの計画と実行 (完全復旧モデル)