简单 select 不返回所有行并且 sp_who returns 没有块
Simple select not returning all rows and sp_who returns no blocks
我正在 运行ning 一个简单的 select on a table with a small amount of rows,它永远 运行ning。我发现 returns 如果我 运行:
SELECT TOP 23 * FROM MyTable ORDER BY 1
但是,如果我 运行:
它会永远挂起
SELECT TOP 24 * FROM MyTable ORDER BY 1
如果我运行sp_who
或者sp_who2
,没有人挡。为什么会发生这种情况,我该如何解决?
如果您 运行 开启 nolock
(忽略未提交的事务),您应该能够 select 所有行:
SELECT * FROM MyTable WITH (NOLOCK)
某处有一个事务尚未提交或回滚(我不确定为什么它没有出现在 sp_who
中)。您可以 运行 以下命令强制所有事务回滚,然后 selecting 应该可以在没有 nolock
的情况下正常工作:
USE master
ALTER DATABASE DbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DbName SET MULTI_USER
我正在 运行ning 一个简单的 select on a table with a small amount of rows,它永远 运行ning。我发现 returns 如果我 运行:
SELECT TOP 23 * FROM MyTable ORDER BY 1
但是,如果我 运行:
它会永远挂起SELECT TOP 24 * FROM MyTable ORDER BY 1
如果我运行sp_who
或者sp_who2
,没有人挡。为什么会发生这种情况,我该如何解决?
如果您 运行 开启 nolock
(忽略未提交的事务),您应该能够 select 所有行:
SELECT * FROM MyTable WITH (NOLOCK)
某处有一个事务尚未提交或回滚(我不确定为什么它没有出现在 sp_who
中)。您可以 运行 以下命令强制所有事务回滚,然后 selecting 应该可以在没有 nolock
的情况下正常工作:
USE master
ALTER DATABASE DbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DbName SET MULTI_USER