SQL Server の自動復旧処理

SQL Server では、チェックポイントは、デフォルトでは、約 1分ごと(トランザクションが絶えず実行されている場合)に発生しているので、その間(チェックポイントとチェックポイントの間)に障害(停電など)が発生することがあり得ます。これにより、実際のデータ(.mdf)への反映が行われていないトランザクションが存在することになるので、このような障害が発生した場合には、SQL Server は、障害から復旧した後の起動時に、次のように動作します。

  1. トランザクション ログを読み、障害前にコミット済みのトランザクションを探す。
  2. コミットされたトランザクションを見つけた場合には、ログに記録された更新履歴をもとにトランザクションをロール フォワードする(やり直す)。
  3. コミットされていないトランザクションを見つけた場合は、トランザクションロールバックする(取り消す)。

この動作は「自動復旧処理」と呼ばれています。したがって、次の図のように障害が発生した場合は、トランザクション B と C がロール フォワードされ、D がロールバックされます。