Очакват се случайни блокировки на RDBMS, които се заключват като SQL Server/Sybase.
Можете да кодирате на клиента, за да опитате отново, както е препоръчано от моя MSDN "Handling Deadlocks" .По принцип прегледайте SQLException и може би половин секунда по-късно опитайте отново.
В противен случай трябва да прегледате кода си, така че всички достъпи до таблиците да са в същия ред. Или можете да използвате SET DEADLOCK_PRIORITY, за да контролирате кой да стане жертва.
В MSDN за SQL Server има "Минимизиране на блокиранията" който започва
Това също споменава „Използване на по-ниско ниво на изолация“, което не ми харесва (същото като много типове SQL тук на SO) и е вашият въпрос. Не го правете е отговорът... :-)
- Какво може да се случи в резултат на използване на (nolock) на всеки SELECT в SQL Server?
- https://dba.stackexchange.com/q/2684/630
Забележка:MVCC тип RDBMS (Oracle, Postgres) нямат този проблем. Вижте http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning но MVCC има други проблеми.