2012-03-08 9 views
0

.NET 4プロジェクトでTransactionScopeに問題があります。C#、Linq2Sql、TransactionScope、 "Transaction has aborted。"、msdtc、sqlserver 2005

DALをドメインに分割しました。つまり、同じデータベースを指す異なるLinq2Sql DataContextがあります。

同じTransactionScope内で複数のDataContextに挿入/更新すると、ローカルとサーバーの両方でmsdtcトランザクションが即時にポップアップ表示され、1-2回だけハングアップすると問題が発生しますt.Complete()およびその後の暗黙の.Disposeが生成され、Exception "Transaction has aborted"が生成されるまで、コードは実行を継続します。

我々はすべて許可するように、両方のローカルおよびサーバー上でMSDTC設定した、認証なし、完全なトレースレベルは、まだ関連情報がdtctrace.log

から来ていない、私はそれがでキックするMSDTCのための標準的な手順だと思いますより多くのデータベース接続が開始されたとき(同じデータベースであっても)、タイムアウトが発生するのはなぜですか?操作は矛盾していないため、ドメイン内にデッドロックが発生する可能性はありませんか?

は、広範囲にここにいくつかのベテランの経験のための希望をGoogleで検索してテストしました:)

答えて

1

SQL2005で複数の接続にまたがるすべてのトランザクションはDTCにエスカレートされます。 SQL2008では、同じ接続文字列を持つ複数の接続がDTCを必要とせずに同じトランザクションに参加できます。あなたが選択したアーキテクチャでは、SQL2008にアップグレードすることを強くお勧めします。 DTCは正常に動作するようにペイントすることができます。

+0

これを避けるために、単一のdatacontextに移動しました。あなたの答えをありがとう。 – MrSmith

関連する問題