私はこれが起こっていることではないかと思います。必要に応じて、基盤となるテクノロジーが分散トランザクションをサポートしている限り、TransactionScopesをネストできます。たとえば、トランザクションを開始してデータベースAのデータを更新してから関数を呼び出し、その関数内で新しいTransactionScopeを作成してデータベースBにデータを挿入すると、内部トランザクションは「アンビエント」を使用します。すでに開いているトランザクション。ただし、これを機能させるには、分散トランザクションコーディネーターを実行する必要があります(SQL Serverの場合)。また、SQL Server 2005以降では、トランザクションを通常のトランザクションとして開始し、必要に応じて分散トランザクションに昇格させることができますが、SQL 2000には、トランザクションを分散トランザクションとして開始する機能がないため、すべてを分散トランザクションとして開始します。それらを促進します。
ネストされたトランザクションがある場合、最も外側のトランザクションがコミットされるまで、トランザクション全体はコミットされません。
ここにいくつかの詳細があります。
TransactionScopeOptionを見てください。これは、ネストされたトランザクションが外部トランザクションとどのように相互作用するかを決定します。