Er worden af en toe impasses verwacht op een RDBMS die vergrendelt zoals SQL Server/Sybase.
U kunt coderen op de client om het opnieuw te proberen, zoals aanbevolen mijn MSDN "Omgaan met deadlocks" .Kijk in principe naar de SQLException en probeer het misschien een halve seconde later opnieuw.
Anders moet u uw code controleren zodat alle toegang tot tabellen in dezelfde volgorde staat. Of je kunt SET DEADLOCK_PRIORITY gebruiken om te bepalen wie het slachtoffer wordt.
Op MSDN voor SQL Server is er "Het minimaliseren van deadlocks" die begint
Dit vermeldt ook "Gebruik een lager isolatieniveau", wat ik niet leuk vind (hetzelfde als veel SQL-typen hier op SO) en is uw vraag. Niet doen is het antwoord... :-)
- Wat kan er gebeuren als gevolg van het gebruik van (nolock) op elke SELECT in SQL Server?
- https://dba.stackexchange.com/q/2684/630
Opmerking:MVCC type RDBMS (Oracle, Postgres) hebben dit probleem niet. Zie http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning maar MVCC heeft andere problemen.