请考虑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
1条答案
按热度按时间syqv5f0l1#
似乎有两个不同的进程同时持有pk\u mytable上的更新锁。
一个会话拥有锁,另一个会话正在等待锁。
2020-06-02 09:50:07.020 spid32s所有者列表2020-06-02 09:50:07.020 spid32s所有者id=process61c7804e8 mode=u
2020-06-02 09:50:07.020 spid32s服务员列表2020-06-02 09:50:07.020 spid32s服务员id=process614a23088 mode=u requesttype=wait
每个会话拥有一个锁,并且正在等待另一个会话拥有的锁。
锁621a0ce00归进程61c7804e8所有,进程614a23088正在等待它。
锁61807A800属于process614a23088,process61c7804e8正在等待它。