Взаимная блокировка возникает, когда два пользователя блокируют отдельные объекты, и каждый пользователь хочет заблокировать объект другого. Когда это происходит, SQL Server завершает взаимоблокировку, автоматически выбирая один и прерывая процесс, позволяя другому процессу продолжить. Прерванная транзакция откатывается и сообщение об ошибке отправляется пользователю прерванного процесса. Как правило, транзакция, которая требует наименьшего количества накладных расходов для отката, является транзакцией, которая прервана.
Решение:
Приоритет тупика может быть установлен пользователем. Другими словами, пользователь может выбрать, какой процесс следует остановить, чтобы позволить другому процессу продолжаться. SQL Server автоматически выбирает процесс, который завершается, который завершает круговую цепочку блокировок. Иногда он выбирает процесс, который выполняется на более короткий период, чем другой процесс.
читать эту статью