複数のスレッドでの DTC タイムアウトの動作を示すプログラムを作成しました。ランダムに見えるいくつかの例外が発生しています。これらはすべて単純なタイムアウトですか、それともより深い問題 (接続プールの相互作用など) を示しているものもありますか?
Microsoft 分散トランザクション コーディネーター (MS DTC) が分散トランザクションをキャンセルしました。
分散トランザクションが完了しました。このセッションを新しいトランザクションまたは NULL トランザクションに登録してください。
現在の接続に関連付けられているトランザクションは完了しましたが、破棄されていません。接続を使用して SQL ステートメントを実行する前に、トランザクションを破棄する必要があります。
操作は、トランザクションの状態に対して無効です。
ExecuteReader には、オープンで使用可能な接続が必要です。接続の現在の状態は閉じています。
コードのデータ部分は次のとおりです。
using (DemoDataDataContext dc1 = new DemoDataDataContext(Conn1))
using (DemoDataDataContext dc2 = new DemoDataDataContext(Conn2))
{
WriteMany(dc1, 100); //generate 100 records for insert
WriteMany(dc2, 100000); //generate 100,000 records for insert
Console.WriteLine("{0} : {1}", Name, " generated records for insert.");
using (TransactionScope ts = new TransactionScope())
{
dc1.SubmitChanges();
dc2.SubmitChanges();
ts.Complete();
}
}