标签: sql deadlock
有一个更新查询导致死锁错误我不知道为什么。在更新查询中已经使用了(rowlock,updlock)提示,但仍会出现死锁错误。
示例查询:
update table a with (rowlock, updlock) set a.column1 = value
这个相同的查询用于几个可以同时调用的存储过程。但是,如果指定了锁,它仍然会导致死锁
答案 0 :(得分:0)
Deadlock。
由于您明确指定在事务处添加锁定的with (rowlock, updlock)。最终,当一个事务正在执行时,它会锁定表。如果另一个事务想要访问同一个记录,则必须等到上一个事务完成并移除锁定才能继续。
with (rowlock, updlock)
使用with NOLOCK可以绕过锁,但是在更新的情况下,这样做太冒险了。更重要的是,正如您所提到的,可以同时执行多个更新。
with NOLOCK
在你的情况下,锁似乎是罪魁祸首。但是,Locks并不是死锁的唯一来源。它也可能是内存问题或线程执行。这个LINK可能会帮助您找出导致死锁的真正原因。