我们有 2 个不同的 wcf 服务,它们由 Windows 服务调用。这些 wcf 服务中的方法正在更新不同存储过程中的同一个表。有一件事是肯定的:在这两个过程中更新的记录是不同的。这是死锁图xml:
<deadlock victim="process4cad4c8">
<process-list>
<process id="process4cad4c8" taskpriority="0" logused="0" waitresource="PAGE: 11:1:960" waittime="3687" ownerId="1043067366" transactionname="UPDATE" lasttranstarted="2015-01-06T04:01:31.207" XDES="0x19b797950" lockMode="IX" schedulerid="7" kpid="3124" status="suspended" spid="103" sbid="6" ecid="0" priority="0" trancount="2" lastbatchstarted="2015-01-06T04:01:31.197" lastbatchcompleted="2015-01-06T03:53:28.053" clientapp="EntityFramework" hostname="hostname" hostpid="1332" loginname="loginname" isolationlevel="read committed (2)" xactid="1043067366" currentdb="11" lockTimeout="4294967295" clientoption1="673185824" clientoption2="128056">
<executionStack>
<frame procname="DB.schema.Proc1" line="63" stmtstart="5600" stmtend="6756" sqlhandle="0x03000b002bcbd65c9605370018a400000100000000000000">
UPDATE Table1 WITH (ROWLOCK)
SET Column1 = @Column1
WHERE Id = @Id </frame>
</executionStack>
<inputbuf>
Proc [Database Id = 11 Object Id = 1557580587] </inputbuf>
</process>
<process …
Run Code Online (Sandbox Code Playgroud)