トランザクションの使用によるデータ整合性の確保

パッケージではトランザクションを使用して、タスクがアトミック単位で実行するデータベース処理をバインドし、この処理によってデータの整合性を保ちます。トランザクションの一部であるデータベース処理はすべて同時にコミットまたはロールバックされるため、データを一貫性のある状態に保つことができます。たとえば、複数のデータ フロー タスクがあり、各タスクが別々のデータベース テーブルに対してデータ更新またはデータ挿入を行うパッケージでは、トランザクションを使用することで、データ フローで実行されるすべての変更がコミットまたはロールバックされることが保証されます。分散トランザクションではこの概念がさらに強化され、複数のオペレーティング システムでの異なる操作を、単一のトランザクションにバインドすることができます。

パッケージのトランザクションは、次の用途で使用します。

  • 更新の一貫性を保つため、複数のタスクの結果を単一のトランザクションにまとめます。たとえば、2 つの異なるテーブルに保存されている受注と品目名に関する情報を 2 つのタスクによってアップロードし、これらのタスクが共に成功または失敗するようにできます。

  • 複数のデータベース サーバーに対して一貫性を保持しながら更新を実行できます。たとえば、顧客の住所を異なる 2 つのオンライン トランザクション処理 (OLTP) システムで変更することができ、全体が 1 つのトランザクション内で処理されます。

  • 非同期環境での更新を保証します。たとえば、パッケージがメッセージ キュー タスクを使用して、アップロードするファイルの名前を含むメッセージを読み取り、削除する場合があります。ファイルをアップロードするタスクが失敗すると、それによってロールバックが実行され、データベースの変更が取り消され、メッセージがキューに戻されます。

  • 単一のパッケージで制御されている状態で、複数のトランザクションを実行できます。たとえば、パッケージ実行タスクを使用すると、終業シーケンスで、3 つの異なるサーバーに対する複数のトランザクションを同時に実行できます。

すべての種類の MicrosoftIntegration Services コンテナー (パッケージ、For ループ コンテナー、Foreach ループ コンテナー、シーケンス コンテナー、タスクをカプセル化するタスク ホスト) でトランザクションを使用するように設定できます。Integration Services では、トランザクションを設定するオプションとして NotSupportedSupported、および Required の 3 つが用意されています。

  • Required は、親コンテナーで既に開始されているトランザクションがない限り、コンテナーでトランザクションを開始するように指定します。開始されているトランザクションが存在する場合は、トランザクションが結合されます。たとえば、トランザクションをサポートするように設定されていないパッケージに Required オプションが設定されたシーケンス コンテナーが含まれている場合、シーケンス コンテナーは固有のトランザクションを開始します。パッケージが Required オプションを使用するように設定されている場合、シーケンス コンテナーはパッケージのトランザクションを結合します。

  • Supported は、コンテナーがトランザクションを開始せず、親コンテナーが開始したトランザクションを結合するように指定します。たとえば、4 つの SQL 実行タスクがあるパッケージでトランザクションが開始され、4 つのタスクすべてに Supported オプションが設定されている場合、いずれかのタスクが失敗すると、SQL 実行タスクで実行されたデータベース更新すべてがロールバックされます。パッケージでトランザクションが開始されない場合、4 つの SQL 実行タスクはトランザクションによってバインドされないため、失敗したタスクで実行されたデータベース更新以外はロールバックされません。

  • NotSupported は、コンテナーがトランザクションを開始せず、既存のトランザクションも結合しないように指定します。親コンテナーで開始されたトランザクションは、トランザクションをサポートしないように設定された子コンテナーに影響を与えません。たとえば、トランザクションを開始するように設定されたパッケージに NotSupported オプションが設定された For ループ コンテナーが含まれていた場合、For ループのタスクが失敗してもロールバックは行われません。

トランザクションの設定は、コンテナーの TransactionOption プロパティで設定します。このプロパティは、Business Intelligence Development Studio の [プロパティ] ウィンドウを使用して、またはプログラムによって設定できます。詳細については、「開発者ガイド (Integration Services)」を参照してください。

注意

TransactionOption プロパティは、コンテナーによって要求された IsolationLevel プロパティの値が適用されるかどうかに影響します。詳細については、「パッケージのプロパティの設定」の IsolationLevel プロパティの説明を参照してください。

パッケージでトランザクションを使用するように設定するには

外部リソース

Integration Services のアイコン (小) 最新の Integration Services の入手

マイクロソフトが提供する最新のダウンロード、アーティクル、サンプル、ビデオ、およびコミュニティで選択されたソリューションについては、MSDN または TechNet の Integration Services のページを参照してください。

これらの更新が自動で通知されるようにするには、ページの RSS フィードを定期受信します。