我们处于选择被更新阻止的情况。但桌子是不同的。
UPDATE [dbo].[TABLE_1]
SET ...
SELECT [t1].[field]
FROM [dbo].[TABLE_1] AS [t1]
WHERE...
当它们同时运行时,这个简单的过程会阻止这个:
SELECT "A lot of fields"
FROM TABLE_TOTALLY_DIFFERENT
INNER JOIN [another table totally different]
ON...
WHERE...
这对我来说毫无意义。
即使通过查看 pageID,我也可以看到在这种情况下被锁定的表是TABLE_TOTALLY_DIFFERENT
.
但他们与他们无关。
我如何寻找并确定它们被锁定的原因?
有几个选项,您必须找到表之间的链接。
检查隐藏的引用:
锁定
TABLE_TOTALLY_DIFFERENT
可能是在一个更大事务的一部分的不同语句中进行的,而这只是在blocked_process_reportUPDATE TABLE_1
中显示的最新语句。还有另一种选择。您有一个组合这些不相关表的索引视图
我在这里写关于这个特定案例的博客 https://straightforwardsql.com/posts/is-lock-in-rcsi-enabled-database/
这是如何检查的代码