SQL Server同时在同一对象上保留两个更新锁

问题描述 投票:0回答:1

从SQL Server死锁错误日志中考虑此代码段。

版本为:

Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4 (X64) 
Copyright (C) 2017 Microsoft Corporation        Nov 30 2018 12:57:58 
Developer Edition (64-bit)

似乎两个不同的进程同时持有PK_mytable的更新锁。

[谁能解释这是怎么回事?

我的理解是,这应该是不可能的。...

谢谢,基思。

 objectname=mydb.myschema.mytable 
indexname=PK_mytable id=lock621a0ce00 mode=U associatedObjectId=72057594046119936
2020-06-02 09:50:07.020 spid32s     owner-list
2020-06-02 09:50:07.020 spid32s      owner id=process61c7804e8 mode=U
2020-06-02 09:50:07.020 spid32s     waiter-list
2020-06-02 09:50:07.020 spid32s      waiter id=process614a23088 mode=U requestType=wait
2020-06-02 09:50:07.020 spid32s    keylock hobtid=72057594046119936 dbid=5 objectname=mydb.myschema.mytable 
indexname=PK_mytable id=lock61807a800 mode=U associatedObjectId=72057594046119936
2020-06-02 09:50:07.030 spid32s     owner-list
2020-06-02 09:50:07.030 spid32s      owner id=process614a23088 mode=U
2020-06-02 09:50:07.030 spid32s     waiter-list
2020-06-02 09:50:07.030 spid32s      waiter id=process61c7804e8 mode=U 
requestType=wait
sql sql-server deadlock database-deadlocks
1个回答
0
投票

似乎两个不同的进程同时持有PK_mytable的更新锁。

一个会话拥有锁,另一个会话是等待中锁。

2020-06-02 09:50:07.020 spid32s 所有者-列表2020-06-02 09:50:07.020 spid32s所有者ID = process61c780 4e8模式= U

2020-06-02 09:50:07.020 spid32s服务员列表2020-06-02 09:50:07.020 spid32s服务员ID = process614a23 088模式= U requestType = wait

每个会话拥有一个锁,正在等待另一会话拥有的锁。

lock621a0ce00由process61c7804e8拥有,process614a23088正在等待它。

lock61807a800由process614a23088拥有,process61c7804e8正在等待它。

© www.soinside.com 2019 - 2024. All rights reserved.