2012-12-03 93 views
1

Short: 在調用transaction.Commit()之後,下一個操作會失敗,就好像事務未提交一樣。SQL事務提交保持連接處於損壞狀態(c#)

更多詳細信息: 我們有一個線程對數據庫運行寫查詢,其中一些被封裝在一個事務中。 在一段時間後運行較重負載時,我們遇到提交事務後的操作失敗並顯示交易正在進行的錯誤情況,具體取決於提交後執行的操作,我們收到以下錯誤之一:

下一個操作是「開始事務:

...連接不支持並行事務...

下一個操作是插入/更新/刪除

的ExecuteNonQuery要求命令 有交易時分配給該命令的連接處於 未決本地事務。命令 的事務屬性尚未初始化。

通過調試器檢查Sql連接對象顯示它包含一個'sqlInnerTransaction'對象,它的父對象設置爲null。 我們確實知道,對'Commit'的調用成功完成,沒有錯誤。
運行.NET 4.0,SQL Server 2008 R2的SP2

+1

你可以添加一些代碼嗎?交易如何開始並提交?是否有可能導致提交錯誤? – Andomar

+0

我們使用sqlCon.BeginStransaction()和器transaction.commit() 我們正與伐木監測和附加的調試和第一異常被抓是一個上面寫的.. –

+0

你或許應該調用Close()或Dispose()在每個(聯合)成功的Commit()之後。使用''語句最簡單。 –

回答

6

看着這條消息:

連接不支持並行事務

我不知道如果您使用的是一個連接對象多線程?

連接不是線程安全的。您應該只在創建它們的線程中使用它們。

+1

@adnomar,我們居然發現其中另一個線程被錯誤地訪問這方面,它同步,但仍然將其固定後,我們並沒有看到錯誤了的情景!奧卡姆的剃刀再次襲擊,謝謝! –

相關問題