如何创建阻止意向排他锁的共享锁

如何创建阻止意向排他锁的共享锁

据我了解,SELECT 语句将在其返回的行上放置共享锁。在 SELECT 运行时,如果出现 UPDATE 语句并需要获取意向独占锁,则该 UPDATE 语句将需要等待,直到 SELECT 语句释放其共享锁。

我正在尝试通过执行 BEGIN TRAN 然后运行 ​​SELECT(不提交),然后在另一个会话中对完全相同的行运行 UPDATE 来测试此 SELECT 共享锁。UPDATE 工作正常 - 没有锁,没有等待。所以这一定不是模拟共享锁阻止意向排他锁的有效方法?您能给我一个场景,让我可以用 SELECT 创建锁,从而强制 UPDATE 等待吗?

我正在通过链接服务器使用 SQL Server 2000 和 2005:表位于 2005 实例上,选择发生在 2000 上,更新从 2​​005 开始执行。全部在 SSMS 2005 中。

答案1

您可以将隔离级别从 READ COMMITTED 更改为 REPEATABLE READ 或 SERIALIZABLE 以强制阻塞。

相关内容