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

时间:2013-04-23 20:06:54

标签: transactions sql-server-2008-r2

我对SQL很新。我正在使用SQL Server 2008 R2。我有以下问题;

(1)

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

UPDATE Student 
SET subject = 'Technology' 
WHERE subjectCode = 'tech';

执行此操作时,哪种类型的锁具有完整的表/行?

(2)

是否有办法获取交易所持有的锁?

1 个答案:

答案 0 :(得分:2)

答案(1):

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

在页面和表级别上,将有(IX)(intent exclusive)锁定 - 表示在“层次结构”(table - > page - > row)中的某个地方有独占锁定的地方。

如果您要更新超过5000行,那么锁定升级将会启动,并且SQL Server已使用单个表级别的独占锁替换了5000多个单独的行级别独占锁。这意味着基本上没有人可以对该表做任何事情。

对于你的问题(2) - see the answers to this other SO question