When you have some SQL deadlocks in your application, (typically you will receive message like this : Transaction (Process ID XX) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction), it can be very difficult to find.
Hopefully, you can use the "SQL Profiler" to detect the source of the deadlock, asking it to generate "Deadlock Graph".
In this post, I will give some an example of a simple SQL query that can generate such a deadlock and how to detect it using the "SQL Profiler" tool and thus how to correct it. [Plus]