Как указывает @Darryl Peterson, SQL Profiler - хороший инструмент для сбора информации о взаимоблокировках.Если вы не знаете, когда возникнет взаимоблокировка, вы можете установить флаг трассировки SQL Server для захвата данных.
DBCC TRACEON (1204)
При возникновении взаимоблокировки информация о взаимоблокировке будет записана на SQL Server.Журнал ошибок.
Существует несколько способов получить тупик.Ваш первый вопрос «почему всегда возникает один и тот же тупик», вероятно, является хорошим знаком.Если взаимоблокировка повторяется, то вы можете ее перехватить и исправить.
Что касается вашего второго вопроса, SQL Server, вероятно, уже говорит одному процессу ждать, пока другой завершит работу.Тем не менее, вы не можете избежать тупика, ожидая.Тупиковая ситуация - это ситуация, когда процесс пытается использовать ресурс, который удерживается другим процессом.Но другой процесс ожидает ресурс, который удерживает первый процесс.Ни один из процессов не освободит ресурс, пока не завершит свою работу.Обратите внимание, что это простое объяснение и могут быть более сложные тупиковые условия.Дело в том, что процессы, находящиеся в тупике, никогда не смогут завершиться.
Как только вы узнаете больше о процессах, связанных с тупиком, вы сможете предпринять шаги, чтобы избежать его.