「トランザクションはすでに暗黙的または明示的にコミットまたは中止されています。」というメッセージが時々スローされるコードの単体テストがあります。例外。Google はすばらしいヒットをたくさん出してくれますが、私が読んだものはどれも当てはまらないようです。
単体テストをローカルで実行すると、例外がスローされることはありません。
ビルド サーバーで手動で実行すると、例外がスローされることはありません。
実際、例外がスローされるように見えるのは、自動化されたビルドおよびテスト プロセス中の夜間のみであり、約 80% の時間で例外がスローされます。
問題は通常、トランザクションまたはファイアウォールのデータベース接続の問題によって引き起こされるため、これにより、この件に関するほとんどすべての Google の結果が除外されます。
イベント ログ (テストを実行しているビルド マシンまたは開発データベース サーバー) のいずれにも、問題があることを示唆するイベントはありません。実際、関連する唯一のイベント メッセージはデータベース マシン上にあり、「MSDTC: セッション アイドル タイムアウト オーバー、セッションを破棄しています」というメッセージが表示されます。テストを実行した直後にイベントが発生します。
この問題を見つけようとする方法がわかりません。
トランザクション状態のコード内から詳細を生成する方法はありますか (私は .NET 3.5 で C# を使用しています)?
これを追跡するのに役立つ詳細情報をイベント ログから取得する方法はありますか?
関連するマシンは Windows 2000 Server (db) と Windows Serer 2003 (build) で、適切なツールを見つけるのに役立ちます。