Ранее я предполагал, что SQL Server будет сообщать о блокирующем сеансе только в столбце blocking_session_id, если заблокированные сеансы ожидают логической блокировки, а не чего-либо еще, такого как PAGELATCH_*
.
Вы используете sp_WhoIsActive
процедуру Адама Маханика , а не встроенную функцию SQL Server. Процедура Адама сообщает обо всех «интересных» причинах блокировки, а не только о блокировке блокировки. Основная информация поступает из различных источников, включая sysprocesses , sys.dm_exec_requests и sys.dm_os_waiting_tasks .
Задача может ждать других вещей, кроме блокировки. Может быть, например, возможность получить эксклюзивную блокировку строки на странице, но затем все еще придется ждать, чтобы получить эксклюзивную блокировку страницы (поскольку другие задачи заблокировали ту же страницу в несовместимом режиме).
В вашем примере PAGELATCH_EX
эксклюзивные защелки страниц находятся на обычных страницах данных или индексов, а не на страницах PFS, GAM, SGAM, DCM или BCM, как указано (*) в конце wait_info .
Вы можете найти документацию (записи в блогах) sp_WhoIsActive
здесь .