2009-12-14 4 views
0

계단식 제한 조건을 사용하여 발생하는 재현성있는 교착 상태를 생성하는 코드를 찾고 있습니다. 특정 문제에 대한 온라인 참조를 찾을 수 있으며 계단식 제약 조건이 사용되는 교착 상태에 대해 수십 개의 질문에 답변했지만 교착 상태가 재현 될 수있는 버전은 없습니다.계단식 제한 조건을 사용하여 재현 가능한 교착 상태를

교착 상태 문제를 해결하는 방법, 교착 상태 그래프를 캡처 또는 읽는 방법, 또는 추적 플래그를 사용하여 교착 상태 그래프를 가져 오는 방법에 대한 정보는 필요하지 않습니다. 나는이 모든 것을 가지고 있는데, 나는이 특정 유형의 교착 상태를 초래하는 잠금의 특성을보고 싶다. 이 교착 상태를 재현 할 수있는 세부 정보를 제공 할 수 있다면 충분히 좋은 대답입니다.

북마크 조회, 명시 적 트랜잭션을 사용하는 저장 프로 시저의 일관되지 않은 테이블 액세스 및 직렬 가능 격리 아래의 존재 확인과 관련된 다른 유형의 교착 상태를 재현 할 수있는 수많은 스크립트가 있습니다. 계단식 구속 교착 상태에 대한 복제를 파악할 수 없습니다.

+0

교착? –

+0

필자는 시도하지 않았으므로 교착 상태가 발생하는지 확실히 알지 못하기 때문에 주석에 넣을 것이다. 그러나 테이블 a와 테이블 b, 테이블 c 및 테이블 b에 FK가있는 상황을 시도해보십시오. FK에서 테이블로 c. 나는 이것이 교착 상태에 빠질 수 있다고 생각한다. 교착 상태를 유발해야하는 스크립트를보고 싶습니다. – HLGEM

+0

레무스, 당신이 언급 한 첫 번째 것은 내가하려고하는 것입니다. HLGEM, 당신은 2005/2008에 그런 순환 의존성을 만들 수 없습니다. 그것은 제가 시도한 첫 번째 일이었습니다. –

답변

0

나는이 게시물이 다소 오래되었음을 알고 있지만 나는 그런 상황에 처해있다. 아래의 교착 상태 정보와 관련 테이블 링크를 찾으십시오 : 및 http://pastebin.com/5E8kw6Kw

외래 키 참조를 포함하지 않은 모든 테이블에 대한 참조를 닫고 일부 테스트 데이터를 작성해야합니다. 페이지 참조 PAGE: 16:8:5031979은 아래 코드에 따라 profmaster 테이블로 해석됩니다. 제발 후자가 해결되지 않기 때문에 출력에서 ​​m_objId 대신 Metadata ObjectId을 사용했습니다. 여기

DBCC TRACEON(3604) 
DBCC PAGE(16,8,5031979,1) 
DBCC TRACEOFF(3604) 

select name from sys.tables where object_id = 1889441805 

페이지 해상도 보고서의 출력입니다 : http://pastebin.com/HfrVp2nP - 내가 SQL 서버 2008 R2 (SP1) X64을 실행하고있어주의하시기 바랍니다

나는 어떻게이 문제에 관해서는 대한 의견을 보내 줄 해결할 수 있습니다.

- 전자 (. 즉, SQL 버그) 삭제 및 기타 작업, 또는 단일 문 교착 상태 타협 계단식 제약, 교착 상태를 사용하여 두 개의 삭제 사이

<deadlock-list> 
<deadlock victim="process53f9f2bc8"> 
    <process-list> 
    <process id="process53f9f2bc8" taskpriority="0" logused="4712" waitresource="KEY: 16:72057678434598912 (a60c363e20e5)" waittime="571706" ownerId="93354998" transactionname="user_transaction" lasttranstarted="2013-11-19T15:39:31.203" XDES="0x80011730" lockMode="U" schedulerid="2" kpid="2064" status="suspended" spid="61" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-11-19T15:39:31.263" lastbatchcompleted="2013-11-19T15:39:31.260" clientapp="3E WebUI" hostname="LA-BAT-26-WAPI" hostpid="2728" loginname="sa" isolationlevel="read committed (2)" xactid="93354998" currentdb="16" lockTimeout="4294967295" clientoption1="671096864" clientoption2="128056"> 
    <executionStack> 
    <frame procname="adhoc" line="1" stmtstart="140" sqlhandle="0x02000000d1e0f407f28e46e45feec1ce34fc8f3e09dcb3c5"> 
update n0t0 set ProfMaster = @0 , MatrixTaxCode = null , PrevProfMaster = @1 , LastProcItemID = @2 , TimeStamp = GETDATE () from Timecard as n0t0 where ((((n0t0 . WorkDate) &lt; = (@3)) and (((n0t0 . IsActive) = (@4)) and ((n0t0 . IsNB) = (@5)))) and (((((n0t0 . ProfMaster) is null) and ((n0t0 . InvMaster) is null)) and ((n0t0 . WIPRemoveDate) is null)) and ((n0t0 . CurrProcItemID) is null))) and ((n0t0 . Matter) in (select n1t1 . Matter from ProfMatter as n1t1 where (n1t1 . ProfMaster) = (@6)))  </frame> 
    <frame procname="adhoc" line="1" sqlhandle="0x0200000095131921232b4d814cc188595c176663442618b6"> 
UPDATE n0t0 SET ProfMaster = 252516,MatrixTaxCode = NULL,PrevProfMaster = 252516,LastProcItemID = &apos;939f3291-10a7-4704-885e-9021b2a39f15&apos;,TimeStamp = GETDATE() FROM Timecard AS n0t0 WHERE ((((n0t0.WorkDate) &lt;= (&apos;11/04/2013 00:00:00&apos;)) AND (((n0t0.IsActive) = (1)) AND ((n0t0.IsNB) = (0)))) AND (((((n0t0.ProfMaster) IS NULL) AND ((n0t0.InvMaster) IS NULL)) AND ((n0t0.WIPRemoveDate) IS NULL)) AND ((n0t0.CurrProcItemID) IS NULL))) AND ((n0t0.Matter) IN (SELECT n1t1.Matter FROM ProfMatter AS n1t1 WHERE (n1t1.ProfMaster) = (252516)))/**0x2C621659**/  </frame> 
    </executionStack> 
    <inputbuf> 
UPDATE n0t0 SET ProfMaster = 252516,MatrixTaxCode = NULL,PrevProfMaster = 252516,LastProcItemID = &apos;939f3291-10a7-4704-885e-9021b2a39f15&apos;,TimeStamp = GETDATE() FROM Timecard AS n0t0 WHERE ((((n0t0.WorkDate) &lt;= (&apos;11/04/2013 00:00:00&apos;)) AND (((n0t0.IsActive) = (1)) AND ((n0t0.IsNB) = (0)))) AND (((((n0t0.ProfMaster) IS NULL) AND ((n0t0.InvMaster) IS NULL)) AND ((n0t0.WIPRemoveDate) IS NULL)) AND ((n0t0.CurrProcItemID) IS NULL))) AND ((n0t0.Matter) IN (SELECT n1t1.Matter FROM ProfMatter AS n1t1 WHERE (n1t1.ProfMaster) = (252516)))/**0x2C621659**/ </inputbuf> 
    </process> 
    <process id="process50b54c8" taskpriority="0" logused="43622588" waitresource="PAGE: 16:8:5031979" waittime="1575" ownerId="87921480" transactionname="user_transaction" lasttranstarted="2013-11-19T14:26:29.400" XDES="0x569d39950" lockMode="U" schedulerid="9" kpid="1304" status="suspended" spid="60" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-11-19T15:49:01.277" lastbatchcompleted="2013-11-19T15:49:01.277" clientapp="3E WebUI" hostname="LA-BAT-27-WAPI" hostpid="2628" loginname="sa" isolationlevel="read committed (2)" xactid="87921480" currentdb="16" lockTimeout="4294967295" clientoption1="671096864" clientoption2="128056"> 
    <executionStack> 
    <frame procname="adhoc" line="1" stmtstart="86" sqlhandle="0x020000006014e71626ea61a3e74df841cee6a59043438dc8"> 
update n0t0 set ProfStatus = @0 , LastProcItemID = @1 , TimeStamp = GETDATE () from ProfMaster as n0t0 join #TempMatterProforma as z0 on ((n0t0 . ProfIndex) = (z0 . ProfIndex)) and ((z0 . IsNewProforma) = (@2))  </frame> 
    <frame procname="adhoc" line="1" sqlhandle="0x020000004d41a316b62a8171bbf8979051631fdc480c754b"> 
UPDATE n0t0 SET ProfStatus = N&apos;P&apos; ,LastProcItemID = &apos;d7eff077-6f52-435f-906a-6fc8f2ee929a&apos;,TimeStamp = GETDATE() FROM ProfMaster AS n0t0 JOIN #TempMatterProforma AS z0 ON ((n0t0.ProfIndex) = (z0.ProfIndex)) AND ((z0.IsNewProforma) = (0))/**0xA8DF8735**/  </frame> 
    </executionStack> 
    <inputbuf> 
UPDATE n0t0 SET ProfStatus = N&apos;P&apos; ,LastProcItemID = &apos;d7eff077-6f52-435f-906a-6fc8f2ee929a&apos;,TimeStamp = GETDATE() FROM ProfMaster AS n0t0 JOIN #TempMatterProforma AS z0 ON ((n0t0.ProfIndex) = (z0.ProfIndex)) AND ((z0.IsNewProforma) = (0))/**0xA8DF8735**/ </inputbuf> 
    </process> 
    </process-list> 
    <resource-list> 
    <keylock hobtid="72057678434598912" dbid="16" objectname="TE_3E_BAT27B.dbo.Timecard" indexname="IDX__TimeIndex__2F97CBE5" id="lock1ffcaf600" mode="X" associatedObjectId="72057678434598912"> 
    <owner-list> 
    <owner id="process50b54c8" mode="X"/> 
    </owner-list> 
    <waiter-list> 
    <waiter id="process53f9f2bc8" mode="U" requestType="wait"/> 
    </waiter-list> 
    </keylock> 
    <pagelock fileid="8" pageid="5031979" dbid="16" objectname="TE_3E_BAT27B.dbo.ProfMaster" id="lock3bf068600" mode="IX" associatedObjectId="72057678315388928"> 
    <owner-list> 
    <owner id="process53f9f2bc8" mode="IX"/> 
    </owner-list> 
    <waiter-list> 
    <waiter id="process50b54c8" mode="U" requestType="wait"/> 
    </waiter-list> 
    </pagelock> 
    </resource-list> 
</deadlock> 
</deadlock-list> 
관련 문제