【发布时间】:2010-06-25 00:23:38
【问题描述】:
我可以看到如何在 SQL Server 中关闭行级和页级锁定,但我找不到强制 SQL Server 使用行级锁定的方法。有没有办法强制 SQL Server 使用行级锁定而不使用页级锁定?
【问题讨论】:
-
主要问题是:为什么你首先要这样做??
-
我有两条 SQL 语句陷入死锁,这是我没想到的。见:stackoverflow.com/questions/3112699/…
-
@marc_s 我也有同样的需要。你知道为什么吗?我有一个 sp 需要并行运行,并且我有多个表的代码要被大量行修改。不知道为什么这不应该被视为有效和自然的需要。问题是它导致 SQL Server 死锁..
-
我也有同样的需求。取出行级锁对于某些算法的正确运行是绝对必要的功能。为了以一种避免死锁的方式取出锁的组,它们必须按定义好的全局顺序进行排序和取出(例如,如果行ID是整数,则锁定集合按升序或降序排列)。当数据库引擎任意将行锁升级为页锁时,页锁会无意中破坏锁定顺序,因为它们最终会锁定恰好在该页上的具有不相关 ID 的行。
标签: sql-server sql-server-2005 sql-server-2008 rowlocking