SSIS 組み込みトランザクションを使用しています。シナリオは以下の通り
同じサーバーに 2 つのデータベースがあり、それらをマージする必要があります (INSERT/UPDATE) SQL Merge 句を使用しています。いくつかのマスター テーブルがあり、それぞれにいくつかの子テーブルがあります。Merge ステートメントは最初にマスター テーブルで実行され、次に子テーブルの ExecuteSQL タスクがあります。子テーブル ExecuteSQL は並列で実行されます。
これを行っている間、接続の取得に失敗し、並行して実行されている ExecuteSQL タスクの 1 つでタスクが失敗します。何が原因か特定できませんでした。
RetainSameConnection は false に設定されており、True に設定すると、「トランザクション コンテキストは別のセッションで使用されています」というエラーが表示されます。
私が理解しているように、RetainSameConnection = True は必要ありません。ローカル TSQL ベースのトランザクションでのみ必要です。DTC が有効で、機能しています。
私のパッケージですべてのタスクが失敗するわけではありません。これは、並列タスクで何らかの形で失敗することにより、接続を正常に取得したことを示唆しています。