Integration Services のトランザクション
パッケージではトランザクションを使用して、タスクがアトミック単位で実行するデータベース処理をバインドし、この処理によってデータの整合性を保ちます。 すべての種類の Microsoft Integration Services コンテナー (パッケージ、For ループ コンテナー、Foreach ループ コンテナー、シーケンス コンテナー、タスクをカプセル化するタスク ホスト) でトランザクションを使用するように設定できます。 Integration Services では、トランザクションを設定するオプションとして、NotSupported、Supported、および Required の 3 つが用意されています。
Required は、親コンテナーで既に開始されているトランザクションがない限り、コンテナーでトランザクションを開始するように指定します。 開始されているトランザクションが存在する場合は、トランザクションが結合されます。 たとえば、トランザクションをサポートするように設定されていないパッケージに Required オプションが設定されたシーケンス コンテナーが含まれている場合、シーケンス コンテナーは固有のトランザクションを開始します。 パッケージが Required オプションを使用するように設定されている場合、シーケンス コンテナーはパッケージのトランザクションを結合します。
Supported は、コンテナーがトランザクションを開始せず、親コンテナーが開始したトランザクションを結合するように指定します。 たとえば、4 つの SQL 実行タスクがあるパッケージでトランザクションが開始され、4 つのタスクすべてに Supported オプションが設定されている場合、いずれかのタスクが失敗すると、SQL 実行タスクで実行されたデータベース更新すべてがロールバックされます。 パッケージでトランザクションが開始されない場合、4 つの SQL 実行タスクはトランザクションによってバインドされないため、失敗したタスクで実行されたデータベース更新以外はロールバックされません。
NotSupported は、コンテナーがトランザクションを開始せず、既存のトランザクションも結合しないように指定します。 親コンテナーで開始されたトランザクションは、トランザクションをサポートしないように設定された子コンテナーに影響を与えません。 たとえば、トランザクションを開始するように設定されたパッケージに NotSupported オプションが設定された For ループ コンテナーが含まれていた場合、For ループのタスクが失敗してもロールバックは行われません。
トランザクションの設定は、コンテナーの TransactionOption プロパティで設定します。 このプロパティは、SQL Server データ ツール (SSDT) の [プロパティ] ウィンドウを使用して、またはプログラムによって設定できます。
注 |
---|
TransactionOption プロパティは、コンテナーによって要求された IsolationLevel プロパティの値が適用されるかどうかに影響します。 詳細については、「パッケージのプロパティの設定」の IsolationLevel プロパティの説明を参照してください。 |
パッケージでトランザクションを使用するように設定するには
外部リソース
|