Во-первых, обновите сервер sql до последнего уровня пакета обновления. Возможно, вы захотите взглянуть на накопительные обновления, выпущенные после этого пакета обновления, и посмотреть, не звучит ли что-то вроде вашей конкретной проблемы. Возможно, это было решено.
SQL Server выберет уничтожение одного из элементов в мертвой блокировке, но это также зависит от настроек времени ожидания запроса. Если время ожидания достаточно велико (300 секунд ...), SQL Server может продолжить выполнение вызова некоторое время.
Если возможно, вы можете использовать NOLOCK в своих таблицах при вызове sql, чтобы он был неблокирующим. Для Linq-To-Sql установите уровень изоляции транзакции на Read Uncommitted, он такой же, как NOLOCK.
Кроме того, я бы добавил трассировку для вызовов linq-to-sql и повторно запустил их в sql profiler, чтобы посмотреть, есть ли что-то, что можно настроить немного лучше, например, лучшие индексы и т. Д.