Oczekiwane są sporadyczne zakleszczenia w RDBMS, które blokują się, takie jak SQL Server/Sybase.
Możesz kodować na kliencie, aby spróbować ponownie zgodnie z zaleceniami MSDN "Obsługa zakleszczeń" .Zasadniczo sprawdź wyjątek SQLException i może pół sekundy później spróbuj ponownie.
W przeciwnym razie przejrzyj swój kod, aby wszystkie dostępy do tabel były w tej samej kolejności. Możesz też użyć SET DEADLOCK_PRIORITY, aby kontrolować, kto staje się ofiarą.
W MSDN dla SQL Server istnieje "Minimalizowanie zakleszczeń" która zaczyna się
Wspomina to również „Użyj niższego poziomu izolacji”, którego nie lubię (takie samo jak wiele typów SQL tutaj w SO) i jest twoim pytaniem. Nie rób tego jest odpowiedzią... :-)
- Co może się stać w wyniku użycia (nolock) na każdym SELECT w SQL Server?
- https://dba.stackexchange.com/q/2684/630
Uwaga:MVCC typu RDBMS (Oracle, Postgres) nie mają tego problemu. Zobacz http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning ale MVCC ma inne problemy.