SQL SERVER 2014中的死锁

时间:2016-04-27 23:59:13

标签: sql-server sql-server-2014

当我的应用程序尝试对我的数据库执行任何 DROP TABLE语句时,我遇到偶发的死锁行为。 我尝试捕获死锁图,这是死锁xml的输出

<deadlock>
 <victim-list>
  <victimProcess id="process2bddc28" />
 </victim-list>
 <process-list>
  <process id="process2bddc28" taskpriority="0" logused="0" waitresource="KEY: 6:281474978938880 (85262e079cd2)" waittime="1900" ownerId="76493296" transactionname="user_transaction" lasttranstarted="2016-02-22T05:58:15.867" XDES="0x621cb38e0" lockMode="S" schedulerid="6" kpid="10748" status="suspended" spid="119" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2016-02-22T05:58:16.080" lastbatchcompleted="2016-02-22T05:58:16.080" lastattention="1900-01-01T00:00:00.080" hostname="DEV01" hostpid="13420" isolationlevel="read committed (2)" xactid="76493296" currentdb="6" lockTimeout="4294967295" clientoption1="671090784" clientoption2="128056">
   <executionStack>
    <frame procname="mssqlsystemresource.sys.sp_columns_100" line="138" stmtstart="12020" stmtend="17532" sqlhandle="0x0300ff7f78a964e13656e600e7a5000001000000000000000000000000000000000000000000000000000000">
  </frame>
   </executionStack>
   <inputbuf>Proc [Database Id = 32767 Object Id = -513496712]</inputbuf>
  </process>
  <process id="process45c8ca8" taskpriority="0" logused="6748" waitresource="KEY: 6:562949956108288 (5db581fe7a0b)" waittime="1900" ownerId="76493663" transactionname="user_transaction" lasttranstarted="2016-02-22T05:58:16.087" XDES="0x16aeded90" lockMode="X" schedulerid="1" kpid="18268" status="suspended" spid="129" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2016-02-22T05:58:16.090" lastbatchcompleted="2016-02-22T05:58:16.090" lastattention="1900-01-01T00:00:00.090" hostname="DEV01" hostpid="20128"  isolationlevel="read committed (2)" xactid="76493663" currentdb="6" lockTimeout="4294967295" clientoption1="671090784" clientoption2="128056">
   <executionStack>
    <frame procname="adhoc" line="1" sqlhandle="0x01000600702bfd0bd083047f0600000000000000000000000000000000000000000000000000000000000000">
DROP TABLE "dbo"."USER_TABLE_1"    </frame>
   </executionStack>
   <inputbuf>
DROP TABLE "dbo"."USER_TABLE_1"   </inputbuf>
  </process>
 </process-list>
 <resource-list>
  <keylock hobtid="281474978938880" dbid="6" objectname="DEV_01.sys.sysschobjs" indexname="clst" id="lock35af27b80" mode="X" associatedObjectId="281474978938880">
   <owner-list><owner id="process45c8ca8" mode="X" /></owner-list>          
   <waiter-list><waiter id="process2bddc28" mode="S" requestType="wait" /></waiter-list>     
   </keylock>
  <keylock hobtid="562949956108288" dbid="6" objectname="DEV_01.sys.syscolpars" indexname="nc" id="lock453c34600" mode="U" associatedObjectId="562949956108288">
   <owner-list><owner id="process2bddc28" mode="S" /></owner-list>
   <waiter-list><waiter id="process45c8ca8" mode="X" requestType="convert" /></waiter-list>
  </keylock>
 </resource-list>
</deadlock>

在早期版本的SQL Server中未出现此行为。有什么想法吗?

0 个答案:

没有答案