Я пытаюсь найти решение, которое разрешит повторяющуюся тупиковую ситуацию на сервере SQL. Я провел некоторый анализ графа взаимоблокировок, сгенерированного трассировкой профилировщика, и получил следующую информацию:
Первый процесс (spid 58) выполняет этот запрос:
UPDATE cds.dbo.task_core
SET nstate = 1
WHERE nmboxid = 89 AND ndrawerid = 1
AND nobjectid IN (SELECT
nobjectid
FROM (SELECT
nobjectid, count(nobjectid) AS counting
FROM cds.dbo.task_core
GROUP BY nobjectid
) task_groups
WHERE task_groups.counting > 1
)
Второй процесс (spid 86) выполняет этот запрос:
INSERT INTO task_core (…) VALUES (…)
spid 58 ожидает блокировку общей страницы на CDS.dbo.task_core (spid 86 содержит конфликтующую блокировку intent Exclusive (IX))
spid 86 ожидает блокировки страницы Intent Exclusive (IX) на CDS.dbo.task_core (spid 58 удерживает конфликтующую блокировку Update)