然后我发现这个事务中使用的表被锁定了。当我只选择 top 1000而不选择 order desc时,它可以选择结果。但是当我用 order desc选择 top 1000时,它会运行很长一段时间。
当我关闭.Net 应用程序时,事务未被提交(基于事务中未更改的数据)。
当我关闭 EXEC ...选项卡(执行伪造的提交查询)时,SSMS 将弹出一个警告窗口:
有未提交的事务。要提交这些事务吗?
我已经测试了 Yes和 No的选择。
如果我单击 Yes,事务就被提交。
如果我单击 No,事务就不会提交。
关闭选项卡后,锁定的表将被释放,然后我就可以成功地查询了。
begin try
-- some process
begin transaction
update ...
output ...
insert ...
-- I missing this commit statement below
commit transaction
end try
begin catch
if (xact_state()) = -1
begin
rollback transaction;
;throw
end;
-- this statement I want to compare to 1, but mistake write to -1, but since the throw statement let the mistake can't be triggerd
if (xact_state()) = 1
begin
commit transaction;
end;
end catch;