My current project uses legacy sql which has been developed over many years and by many developers – unfortunately I am at the top of the food chain – and hence am a user of the legacy system. Getting the dreaded
“Transaction (Process ID 52) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.”
This article is really useful to explain how resolve such issues:
http://www.simple-talk.com/sql/learn-sql-server/how-to-track-down-deadlocks-using-sql-server-2005-profiler/
And some general dba design which everyone should read:
http://en.wikipedia.org/wiki/Two_phase_locking
Some sql performance design tips:
http://www.sql-server-performance.com/tips/deadlocks_p1.aspx