Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 范围-U和U同时锁定在同一资源上_Sql Server_Tsql_Sql Server 2008 R2_Deadlock_Sql Server Profiler - Fatal编程技术网

Sql server 范围-U和U同时锁定在同一资源上

Sql server 范围-U和U同时锁定在同一资源上,sql-server,tsql,sql-server-2008-r2,deadlock,sql-server-profiler,Sql Server,Tsql,Sql Server 2008 R2,Deadlock,Sql Server Profiler,我正在处理一些存储过程和死锁情况 我一直在使用SQLServerProfiler,并以.xdl文件的形式从“死锁图”事件中获得了一些关于死锁的信息。 下面是该文件的内容。 我刚刚清除了有关该语句的一些信息。在.xdl中标记为的语句是这样的(对于两个进程,都是相同的语句): 以及.xdl文件的内容: <deadlock-list> <deadlock victim="processc19dc8"> <process-list> <process

我正在处理一些存储过程和死锁情况

我一直在使用SQLServerProfiler,并以.xdl文件的形式从“死锁图”事件中获得了一些关于死锁的信息。 下面是该文件的内容。

我刚刚清除了有关该语句的一些信息。在.xdl中标记为
的语句是这样的(对于两个进程,都是相同的语句):

以及.xdl文件的内容:

<deadlock-list>
 <deadlock victim="processc19dc8">
  <process-list>
   <process id="processc19dc8" taskpriority="0" logused="0" waitresource="KEY: 5:72057594042646528 (8194443284a0)" waittime="1541" ownerId="21923027" transactionname="user_transaction" lasttranstarted="2013-07-02T18:03:42.260" XDES="0x80051950" lockMode="RangeS-U" schedulerid="2" kpid="2712" status="suspended" spid="54" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2013-07-02T18:03:42.260" lastbatchcompleted="2013-07-02T18:03:42.260" clientapp=".Net SqlClient Data Provider" hostname="XXX" hostpid="2148" loginname="XXX" isolationlevel="serializable (4)" xactid="21923027" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
    ...
   </process>
   <process id="processc4d048" taskpriority="0" logused="0" waitresource="KEY: 5:72057594042646528 (a0c936a3c965)" waittime="1541" ownerId="21923023" transactionname="user_transaction" lasttranstarted="2013-07-02T18:03:42.260" XDES="0x80049800" lockMode="RangeS-U" schedulerid="4" kpid="2492" status="suspended" spid="53" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2013-07-02T18:03:42.260" lastbatchcompleted="2013-07-02T18:03:42.260" clientapp=".Net SqlClient Data Provider" hostname="XXX" hostpid="2148" loginname="XXX" isolationlevel="serializable (4)" xactid="21923023" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
   ...
   </process>
  </process-list>
  <resource-list>
   <keylock hobtid="72057594042646528" dbid="5" objectname="dbo.SomeTable" indexname="PK_SomeTable" id="lock83d99200" mode="RangeS-U" associatedObjectId="72057594042646528">
    <owner-list>
     <owner id="processc4d048" mode="RangeS-U"/>
    </owner-list>
    <waiter-list>
     <waiter id="processc19dc8" mode="RangeS-U" requestType="wait"/>
    </waiter-list>
   </keylock>
   <keylock hobtid="72057594042646528" dbid="5" objectname="dbo.SomeTable" indexname="PK_SomeTable" id="lock89b52900" mode="U" associatedObjectId="72057594042646528">
    <owner-list>
     <owner id="processc19dc8" mode="U"/>
    </owner-list>
    <waiter-list>
     <waiter id="processc4d048" mode="RangeS-U" requestType="wait"/>
    </waiter-list>
   </keylock>
  </resource-list>
 </deadlock>
</deadlock-list>

...
...
因此,看起来第一个进程拥有
mode=U
的资源,第二个进程拥有
mode=RangeS-U
的相同资源


如果这两种模式彼此不兼容(根据),如何可能?

它们不是完全相同的资源。锁位于两个不同的键上,键:5:72057594042646528(8194443284a0)和键:5:72057594042646528(a0c936a3c965)。我已经更改了该存储过程的代码,因此死锁不再发生。但你是对的,我没有注意到。
<deadlock-list>
 <deadlock victim="processc19dc8">
  <process-list>
   <process id="processc19dc8" taskpriority="0" logused="0" waitresource="KEY: 5:72057594042646528 (8194443284a0)" waittime="1541" ownerId="21923027" transactionname="user_transaction" lasttranstarted="2013-07-02T18:03:42.260" XDES="0x80051950" lockMode="RangeS-U" schedulerid="2" kpid="2712" status="suspended" spid="54" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2013-07-02T18:03:42.260" lastbatchcompleted="2013-07-02T18:03:42.260" clientapp=".Net SqlClient Data Provider" hostname="XXX" hostpid="2148" loginname="XXX" isolationlevel="serializable (4)" xactid="21923027" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
    ...
   </process>
   <process id="processc4d048" taskpriority="0" logused="0" waitresource="KEY: 5:72057594042646528 (a0c936a3c965)" waittime="1541" ownerId="21923023" transactionname="user_transaction" lasttranstarted="2013-07-02T18:03:42.260" XDES="0x80049800" lockMode="RangeS-U" schedulerid="4" kpid="2492" status="suspended" spid="53" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2013-07-02T18:03:42.260" lastbatchcompleted="2013-07-02T18:03:42.260" clientapp=".Net SqlClient Data Provider" hostname="XXX" hostpid="2148" loginname="XXX" isolationlevel="serializable (4)" xactid="21923023" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
   ...
   </process>
  </process-list>
  <resource-list>
   <keylock hobtid="72057594042646528" dbid="5" objectname="dbo.SomeTable" indexname="PK_SomeTable" id="lock83d99200" mode="RangeS-U" associatedObjectId="72057594042646528">
    <owner-list>
     <owner id="processc4d048" mode="RangeS-U"/>
    </owner-list>
    <waiter-list>
     <waiter id="processc19dc8" mode="RangeS-U" requestType="wait"/>
    </waiter-list>
   </keylock>
   <keylock hobtid="72057594042646528" dbid="5" objectname="dbo.SomeTable" indexname="PK_SomeTable" id="lock89b52900" mode="U" associatedObjectId="72057594042646528">
    <owner-list>
     <owner id="processc19dc8" mode="U"/>
    </owner-list>
    <waiter-list>
     <waiter id="processc4d048" mode="RangeS-U" requestType="wait"/>
    </waiter-list>
   </keylock>
  </resource-list>
 </deadlock>
</deadlock-list>