0

我在一个只有少量行的表上运行一个简单的选择,并且它会永远运行。我发现如果我运行它会返回正常:

SELECT TOP 23 * FROM MyTable ORDER BY 1

但是,如果我运行,它会永远挂起:

SELECT TOP 24 * FROM MyTable ORDER BY 1

如果我运行sp_whoor sp_who2,则没有人阻塞。为什么会发生这种情况,我该如何解决?

4

1 回答 1

0

如果您使用nolockon 运行(忽略未提交的事务),您应该能够选择所有行:

SELECT * FROM MyTable WITH (NOLOCK)

某处有一个事务尚未提交或回滚(我不确定它为什么没有出现在 中sp_who)。您可以运行以下命令强制所有事务回滚,然后选择应该可以正常工作,而无需nolock

USE master
ALTER DATABASE DbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DbName SET MULTI_USER
于 2015-03-19T20:42:44.057 回答