2017-03-29 67 views
1

當我的一些交易發生衝突時,出現此錯誤。我怎樣才能找到衝突中的thansaction? (沒有SQL服務器分析器)。衝突的交易

我使用快照隔離級別

System.Data.SqlClient.SqlException:中止由於更新衝突快照隔離事務 。您不能使用快照隔離到 訪問表'dbo.Users'直接或間接地在數據庫 'IUMobileDbRelease'中更新,刪除或插入已由其他事務修改或刪除的行。重試事務或 更改更新/刪除語句的隔離級別。

System.Data.Entity.Internal.InternalContext.SaveChanges() 
+0

您使用SQL Server Profiler。或擴展事件,替換探查器。更好的是,只*不*使用交易。改用樂觀併發。這是自20世紀90年代以來的標準建議。使用事務*的代碼不能*擴展並且總是*必須處理死鎖並重試。自20世紀90年代以來,應用程序使用樂觀併發和rowversion列來檢測衝突的更改*不使用事務 –

+0

另一種選擇是使用SNAPSHOT事務隔離級別而不是可重複讀取。它比樂觀併發要慢,但可以確保您不會遇到任何死鎖,除非兩個應用程序嘗試修改同一行(即其SQL Server版本是 –

+0

)?考慮這一點:http://stackoverflow.com/a/33272566/1132334 – dlatikay

回答