2009-07-17 7 views
0

SQL 2008에서 이벤트 테이블에 대해 아주 작은 삭제를 실행하고 임의로 교착 상태를 만듭니다. 그러나 우리는 요구에 따라 그것을 다시 만들 수 없습니다. delete 문은 최대 2 ~ 5 행에 적합합니다. Administration_NET.dbo.tblEvents 로부터간단한 삭제시 SQL 2008 교착 상태

삭제 어디 EMSaccountID = 'DELE10A'

어떤 아이디어가?

+1

자세한 정보는 테이블의 실행 계획 및 색인과 유사합니다. –

답변

0

실행 :

SET SET SHOWPLAN_ALL ON 

한 다음 삭제, 테이블 스캔이? 그렇다면 색인 문제가 있습니다

3

다른 문장으로 인해 교착 상태가 발생하거나 교착 상태가됩니다.

단순한 reader/writer deadlock based on index access order 일 수 있습니다. 설명을 보려면 내 링크를 참조하십시오. EMSaccountID가 클러스터되지 않은 인덱스 인 경우 이는 매우 유용합니다.

0

tblEvents 테이블에 얼마나 많은 다른 유형의 명령문이 적용됩니까? 삭제와 동시에 insert/update/select 문을 실행할 수 있습니까? 일부 삭제를 시도하는 것과 동시에 많은 양의 삽입/업데이트/선택을 실행하여 문제를 재현 할 수 있습니다.

0

바보 같은 생각이 있습니다. 어쩌면 테이블 Calendar_blockblock을 사용하여 계단식 삭제를 설정할 수 있습니다.이 경우 삭제 작업은 더 많은 테이블에 잠금을 설정합니다.

1

아무도 풍부한 정보없이 당신을 도울 수 있습니다 :

는 특히, 그래서 SQL 서버가 문제가되는 트랜잭션을 롤백 이유를 기록합니다 일부 추적 플래그를 사용하도록 설정해야합니다.

그래서, 교착 상태 추적을 사용 :이 설정을 사용하면

DBCC TRACEON(1204,1222)  

(필요한 경우주기 SQL 서버, 당신은 시작 옵션에 지정할 수 있습니다 때이 설정은 사라질 것입니다), 당신의 SQL 서버 로그는이 같은 모양, 교착 상태 체인에 대한 정보가 포함됩니다 :

 
2003-05-14 11:46:26.76 spid4  Starting deadlock search 1 
2003-05-14 11:46:26.76 spid4  Target Resource Owner: 
2003-05-14 11:46:26.76 spid4  ResType:LockOwner Stype:'OR' Mode: S SPID:55 ECID:0 Ec:(0x43CAB580) Value:0x42bdf340 
2003-05-14 11:46:26.76 spid4  Node:1  ResType:LockOwner Stype:'OR' Mode: S SPID:55 ECID:0 Ec:(0x43CAB580) Value:0x42bdf340 
2003-05-14 11:46:26.76 spid4  
2003-05-14 11:46:26.76 spid4  End deadlock search 1 ... a deadlock was not found. 
2003-05-14 11:46:26.76 spid4  ---------------------------------- 
2003-05-14 11:46:31.76 spid4  ---------------------------------- 
2003-05-14 11:46:31.76 spid4  Starting deadlock search 2 

귀하의 질문에 해당 정보를 붙여 넣기를, 그것은 직경에 필수적이다 문제를 무시하고.