2013-05-08 3 views
0

Я пытаюсь найти и убить сеанс, который установил блокировку на одной из таблиц и останавливает выполнение многих других запросов. Для этого я использую следующий сценарий:Отрицательный SPID в SQL Server?

SELECT REQUEST_MODE, REQUEST_TYPE, REQUEST_SESSION_ID 
FROM sys.dm_tran_locks 
WHERE RESOURCE_TYPE = 'OBJECT' 
AND RESOURCE_ASSOCIATED_ENTITY_ID =(SELECT OBJECT_ID('System')) 

Набор результатов я получаю следующим образом:

enter image description here

Запуск EXEC sp_who2 не возвращает строку с отрицательным ИСП. Как я могу найти сеанс, блокирующий мою таблицу?

ответ

5

sys.dm_tran_lock, REQUEST_SESSION_ID:

Значение -2 указывает, что запрос относится к сиротского распределенной транзакции.

Таким образом, фактического идентификатора сеанса больше не существует здесь. Чтение замечаний должно привести вас к KILL:

Использование УБИТЬ UOW прекратить осиротевших распределенные транзакции. Эти транзакции не связаны с каким-либо реальным идентификатором сеанса, а искусственно связаны с идентификатором сеанса = «-2». Этот идентификатор сеанса упрощает идентификацию потерянных транзакций путем запроса столбца идентификатора сеанса в sys.dm_tran_locks, sys.dm_exec_sessions или sys.dm_exec_requests динамических представлениях управления.

+0

блестящий спасибо! –

+0

+1 У этой проблемы возникла проблема с сценарием миграции, который связан с связанным сервером. – mCasamento

Смежные вопросы