Typical methods you can use to resolve deadlocks include:
- Adding and dropping indexes.
- Adding index hints.
- Modifying the application to access resources in a similar pattern.
- Removing activity from the transaction like triggers.
Keeping transactions as short as possible.
In SQL Server, you can also minimize locking contention while protecting transactions from dirty reads of uncommitted data modifications using either:
- The READ COMMITTED isolation level with the READ_COMMITTED_SNAPSHOT database option set to ON.
- The SNAPSHOT isolation level.
Load SQL Profiler with a focus on locking, initiate the scripts which deadlock specifically for that DB and feed it into the Database Engine Tuning Adviser, and review the suggestions.
Footnotes: http://support.microsoft.com/kb/832524
[[1]: http://support.microsoft.com/kb/832524
http://www.codeproject.com/Articles/42547/SQL-SERVER-How-To-Handle-Deadlock
Prior Stackoverflow locking question how to solve deadlock problem?