Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 简单选择不返回所有行和不返回块的sp__Sql_Sql Server_Transactions_Nolock - Fatal编程技术网

Sql 简单选择不返回所有行和不返回块的sp_

Sql 简单选择不返回所有行和不返回块的sp_,sql,sql-server,transactions,nolock,Sql,Sql Server,Transactions,Nolock,我在一个只有少量行的表上运行一个简单的select,它将永远运行下去。我发现,如果我运行以下命令,则返回的结果很好: SELECT TOP 23 * FROM MyTable ORDER BY 1 SELECT TOP 24 * FROM MyTable ORDER BY 1 但是,如果我跑步,它将永远挂起: SELECT TOP 23 * FROM MyTable ORDER BY 1 SELECT TOP 24 * FROM MyTable ORDER BY 1 如果我运行sp_wh

我在一个只有少量行的表上运行一个简单的select,它将永远运行下去。我发现,如果我运行以下命令,则返回的结果很好:

SELECT TOP 23 * FROM MyTable ORDER BY 1
SELECT TOP 24 * FROM MyTable ORDER BY 1
但是,如果我跑步,它将永远挂起:

SELECT TOP 23 * FROM MyTable ORDER BY 1
SELECT TOP 24 * FROM MyTable ORDER BY 1

如果我运行
sp_who
sp_who2
,则没有人阻塞。为什么会发生这种情况,我如何修复它?

如果在启用
nolock
的情况下运行(忽略未提交的事务),您应该能够选择所有行:

SELECT * FROM MyTable WITH (NOLOCK)
某个地方有一个事务尚未提交或回滚(我不知道为什么它没有显示在
sp\u who
)。您可以运行以下命令强制回滚所有事务,然后选择“应该可以正常工作,而无需
nolock
”:

USE master
ALTER DATABASE DbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DbName SET MULTI_USER

这两个查询的性能应该基本相同。@GordonLinoff问题是一个打开的事务插入了第24行。使用
nolock
运行返回了有问题的行。