Я нашел это из http://sqlserverdb.blogspot.com/2011/06/find-all-system-and-user-defined-error.html:
SELECT
t.resource_type,
t.resource_database_id,
t.resource_associated_entity_id,
t.request_mode,
t.request_session_id,
w.blocking_session_id
FROM sys.dm_tran_locks as t
INNER JOIN sys.dm_os_waiting_tasks AS w
ON t.lock_owner_address =w.resource_address
И оттуда я пытаюсь получить фактический оператор SQL, который приходит из w.blocking_session_id, но я не могу найти правильные биты.Кто-нибудь может указать мне на подсказку?
Я использую это в одном окне запроса SSMS (SQL2008):
begin transaction
update MyTable with (tablockx)
set MyTableColumn = MyTableColumn
where 1 = 0
И в другом новом окне я выполнил это:
select * from MyTable
И SSMS показывает, что он ожидает «навсегда» для выполнения запроса, поэтому он является жертвой блока.Но я хочу выяснить, кто на самом деле код проблемы.
Спасибо.