sp_who2 BlkBy Команда ожидания процесса ожидания - PullRequest
9 голосов
/ 18 ноября 2010

При запуске sp_who2 кажется, что одна из моих команд SQL блокирует, но ожидает процесс "Спящий" и "Команда ожидания". Это не имеет никакого смысла.

alt text

Есть идеи, что может быть причиной этого? Я знаю, что DELETE выполняется внутри транзакции, которая ранее вставляла много строк в таблицу, может ли это быть проблемой?

Ответы [ 2 ]

12 голосов
/ 18 ноября 2010

Возможно, у вас есть открытая транзакция с SPID 98. Блокирующий SPID не обязательно должен быть активным

Попробуйте, посмотрите на open_tran столбец

SELECT
    p1.SPID AS blockedSPID, p2.SPID AS blockingSPID, ...
FROM 
    master..sysprocesses p1
    JOIN
    master..sysprocesses p2 ON p1.blocked = p2.spid

После этого этот сценарий дает , когда вы открываете транзакции, последний SQL и план.

И читаете KB 224453 для хорошей меры

0 голосов
/ 18 ноября 2010

Не зная SQL, которые вы используете, было бы крайне сложно сказать.Но, основываясь на сценарии удаления / вставки, возможно ли, что вы запустили транзакцию для вставки, а затем открыли другую транзакцию, чтобы удалить некоторые из этих вставленных записей без завершения предыдущей транзакции?

Я видел этовопрос такого рода, и вот как он проявляется.

...