Transactions 有没有办法检查事务授予的锁

Transactions 有没有办法检查事务授予的锁,transactions,sql-server-2008-r2,Transactions,Sql Server 2008 R2,我对SQL非常陌生。我正在使用SQLServer2008R2。我有以下问题: (1) 事务已启动,但未达到其提交点 UPDATE Student SET subject = 'Technology' WHERE subjectCode = 'tech'; 执行此操作时,什么类型的锁定具有完整的表/行 (2) 有没有办法获得事务持有的锁?回答(1): 如果事务未被任何预先存在的锁阻止,则Student表中具有subjectCode='tech'的所有行现在都将具有(X)(独占)锁 在页面和表

我对SQL非常陌生。我正在使用SQLServer2008R2。我有以下问题:

(1)

事务已启动,但未达到其提交点

UPDATE Student 
SET subject = 'Technology' 
WHERE subjectCode = 'tech';
执行此操作时,什么类型的锁定具有完整的表/行

(2)

有没有办法获得事务持有的锁?

回答(1):

如果事务未被任何预先存在的锁阻止,则
Student
表中具有
subjectCode='tech'
的所有行现在都将具有
(X)
(独占)锁

在页面和表级别上,将有
(IX)
(意图独占)锁-表示在“层次结构”(表->页面->行)的较低位置存在独占锁

如果更新的行数超过5000行,则锁升级将启动,并且SQL Server已将5000多个单独的行级独占锁替换为单个表级独占锁。这意味着基本上没有人能用那张桌子做任何事情


关于你的问题(2)-。

请参阅。问题1的解释很好。非常感谢。