Deadlocks ocasionais em um RDBMS que bloqueia como SQL Server/Sybase são esperados.
Você pode codificar no cliente para tentar novamente conforme recomendado meu MSDN "Handling Deadlocks" .Basicamente, examine o SQLException e talvez meio segundo depois, tente novamente.
Caso contrário, você deve revisar seu código para que todos os acessos às tabelas estejam na mesma ordem. Ou você pode usar SET DEADLOCK_PRIORITY para controlar quem se torna vítima.
No MSDN para SQL Server há "Minimizing Deadlocks" que começa
Isso também menciona "Usar um nível de isolamento mais baixo" que eu não gosto (o mesmo que muitos tipos de SQL aqui no SO) e é sua pergunta. Não faça isso é a resposta... :-)
- O que pode acontecer como resultado do uso de (nolock) em cada SELECT no SQL Server? a>
- https://dba.stackexchange.com/q/2684/630
Observação:MVCC tipo RDBMS (Oracle, Postgres) não tem esse problema. Consulte http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning mas MVCC tem outros problemas.