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