2012-03-08 40 views
0

我們在.NET 4項目中遇到TransactionScope問題。C#,Linq2Sql,TransactionScope,「Transaction has aborted。」,msdtc,sqlserver 2005

我們已經將我們的DAL分割成了域,也就是說我們有不同的Linq2Sql DataContexts指向同一個數據庫。

當在同一個TransactionScope中,我們在多個DataContext上插入/更新時,會立即彈出一個msdtc事務,在本地和服務器上都會彈出,然後它只會在那裏掛起1-2分鐘(猜測超時),代碼將繼續運行,直到t.Complete()和隨後的隱含的.Dispose將產生並異常「事務已中止」。

我們已經配置MSDTC在本地和服務器上,讓所有,任何身份驗證,全部跟蹤的水平,仍然沒有相關的信息來自dtctrace.log

我想這是標準程序MSDTC踢當更多的一個數據庫連接啓動(即使它是相對於同一個數據庫),但爲什麼超時?這些操作沒有衝突,在我們的域中發生死鎖沒有可能的方式?

用Google搜索,並在這裏一些經驗豐富的經驗:)

回答

1

隨着SQL2005任何跨越多個連接的交易將被升級到DTC廣泛的測試,希望。使用SQL2008,具有相同連接字符串的多個連接可以參與相同的事務,而不需要DTC。如果您選擇了這個架構,我強烈建議升級到SQL2008。 DTC可以成爲正確工作的塗料。

+0

我們轉移到單個數據上下文來避免這種情況。謝謝您的回答。 – MrSmith 2012-03-09 09:05:06