2009-05-12 7 views
0

프로세스가 한 테이블을 잠근 dev 서버에서 오늘 문제가 발생하여 해당 테이블의 다른 모든 쿼리가 작동하지 않게되었습니다. sql_who2을 실행할 때 blkBy 열 값은 -2 였지만 -2는 프로세스 목록에 없었습니다.sql_who2는 BlkBy 열에서 -2를 제공합니다.

DBCC INPUTBUFFER (-2)을 실행할 때 잘못된 SPID -2가 지정된 예외가 발생했습니다.

beta_lockinfo을 실행하면 lock 테이블과 인덱스가 모두 표시되지만 ownertype가 트랜잭션 인 경우를 제외하고는 다른 모든 정보가 null입니다.

웹 애플리케이션을 다시 시작하면 잠금이 dissapered 같은 내 질문은 왜 음의 값 SPID입니다 -2 SPID

의 모든 흔적을했고, 왜 내가 할 수있는 (Web.config의 변화를했다) 그것에 대해 어떤 정보도 얻지 못했습니까?

답변

3

SPID가 -2이면 분리 된 분산 트랜잭션에 의해 프로세스가 차단되었음을 나타냅니다.

을 사용하여 분리 된 분산 트랜잭션 또는 다른 분산 트랜잭션을 종료 할 수 있습니다. 이를 수행하려면 작업 단위 (UOW)의 GUID를 sys.dm_tran_locks.request_owner_guid에서 가져와야합니다.

SELECT 
    [tl].[request_owner_guid] 
FROM 
    sys.dm_tran_locks tl 
WHERE 
    [tl].[request_session_id] = -2 

-2는 단지 인공적인 연관체입니다. 세션 ID가 -2이면 동적 관리 뷰의 세션 ID 열을 쿼리하여 고아 트랜잭션을 쉽게 식별 할 수 있습니다.

+0

Thx! 분산 트랜잭션의 출처를 찾는 것이 가능한지 어떻게 알고 있습니까? 전혀 정보? – Atle

+0

시작> 실행 ... 대화 상자에 'dcomcnfg'를 입력하여 Microsoft Distributed Transaction Coordinator MMC 스냅인을 열 수 있어야합니다. 로컬 DTC 노드에서 in-doubt로 표시된 트랜잭션을 찾습니다. 이 트랜잭션은 원격 서버에서 발생했을 가능성이 큽니다. –

관련 문제