我可以在读取未提交模式下访问数据库,并且需要在操作环境中对表进行维护。我需要获取一个表的排他锁,做一个工作,然后释放锁。
在此维护期间,即使读取查询也不应将未提交的数据取回。
这个问题和答案看起来很有希望。我愿意:
begin transaction;
SELECT TOP (1) 1 FROM a WITH (TABLOCK);
Run Code Online (Sandbox Code Playgroud)
但是随后,SIX
在 table 上获得了锁a
。但是,这不会从选择查询中锁定表。如何获取Sch-M
表上的锁?我最多可以通过以下方式获得Sch-S
锁定:
SELECT TOP (1) * FROM a WITH (TABLOCK);
Run Code Online (Sandbox Code Playgroud)
这仍然不会阻止表上的选择查询。