トランザクション ログの概要

すべての SQL Server 2005 データベースにはトランザクション ログがあり、データベース内のすべてのトランザクションとそれらのトランザクションによって加えられた変更が記録されます。トランザクション ログはデータベースの重要なコンポーネントの 1 つであり、システム障害が発生すると、データベースを一貫性のある状態にするために求められる場合があります。結果がどのようになるかを完全に把握できる場合を除き、トランザクション ログを削除または移動しないでください。

トランザクション ログによりサポートされる操作

トランザクション ログでは、次の操作がサポートされます。

  • 個別のトランザクションの復旧

  • SQL Server の起動時に未完了だったすべてのトランザクションの復旧

  • 復元したデータベース、ファイル、ファイル グループ、またはページの障害時点までのロールフォワード

  • トランザクション レプリケーションのサポート

  • スタンバイ サーバー ソリューションのサポート

個別のトランザクションの復旧

アプリケーションで ROLLBACK ステートメントが実行されるか、データベース エンジンでクライアントとの通信の喪失などのエラーが検出された場合、未完了のトランザクションによって加えられた変更をロールバックするために、ログ レコードが使用されます。

SQL Server の起動時に未完了だったすべてのトランザクションの復旧

SQL Server を実行しているサーバーに障害が起きると、データベースは一部の変更がバッファ キャッシュからデータ ファイルに書き込まれていない状態になる場合があり、未完了のトランザクションによる変更がデータ ファイル内に存在している可能性もあります。SQL Server のインスタンスは、起動時に各データベースの復旧を行います。ログに記録されていて、データ ファイルに書き込まれなかった可能性があるすべての変更は、ロールフォワードされます。その後、トランザクション ログに記録されている未完了のトランザクションは、データベースの整合性を確保するために、すべてロールバックされます。

復元したデータベース、ファイル、ファイル グループ、またはページの障害時点までのロールフォワード

ハードウェアの故障やディスク障害などによりデータベース ファイルが影響を受けた場合、そのデータベースを障害が発生した時点まで復元できます。まずデータベースの最新の完全バックアップまたは差分バックアップを復元し、次にその後の一連のトランザクション ログ バックアップを障害が発生した時点まで復元します。各ログ バックアップを復元するときに、ログに記録されている変更がデータベース エンジンにより再適用されて、すべてのトランザクションがロールフォワードされます。最後のログ バックアップまで復元されると、データベース エンジンはログ情報を使用して、障害の時点では完了していなかったすべてのトランザクションをロールバックします。

トランザクション レプリケーションのサポート

ログ リーダー エージェントは、トランザクション レプリケーション用に構成された各データベースのトランザクション ログを監視し、レプリケーションのマークが付けられたトランザクションをトランザクション ログからディストリビューション データベースにコピーします。詳細については、「トランザクション レプリケーションの動作方法」を参照してください。

スタンバイ サーバー ソリューションのサポート

スタンバイ サーバー ソリューション、データベース ミラーリング、およびログ配布は、トランザクション ログに大きく依存しています。ログ配布シナリオでは、プライマリ データベースのアクティブなトランザクション ログがプライマリ サーバーから 1 つ以上の配布先に送信されます。各セカンダリ サーバーでは、受信したログがローカルのセカンダリ データベースに復元されます。詳細については、「ログ配布の概要」を参照してください。

データベース ミラーリング シナリオでは、プリンシパル データベースに対するすべての更新が、そのデータベースの完全なコピーである、独立したミラー データベースに直ちに再現されます。各ログ レコードは、プリンシパル サーバー インスタンスからミラー サーバー インスタンスに直ちに送信されます。ミラー サーバー インスタンスでは、受信したログ レコードがミラー データベースに適用され、ミラー データベースが継続的にロールフォワードされます。詳細については、「データベース ミラーリングの概要」を参照してください。

トランザクション ログの特性

SQL Server データベース エンジンのトランザクション ログには、次のような特性があります。

  • トランザクション ログは、データベース内に別個のファイルまたはファイル セットとして実装されます。ログ キャッシュはデータ ページ用のバッファ キャッシュとは別に管理され、単純かつ高速の、堅牢なコードとしてデータベース エンジンに実装されています。

  • ログのレコードとページの形式は、データ ページの形式に従うように制約はされません。

  • トランザクション ログは、複数のファイルとして実装できます。ログの FILEGROWTH 値を設定することで、これらのファイルが自動的に拡張されるように定義できます。これにより、トランザクション ログが領域不足になる可能性が減り、同時に管理のオーバーヘッドも減少します。詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。

  • ログ ファイル内の領域を再利用するメカニズムは高速で、トランザクションのスループットに及ぼす影響も最小限で済みます。