最简单的SQL查询永远不会返回

时间:2011-01-07 10:23:27

标签: sql sql-server-2008-express

我的SQL查询非常简单select * from tblOrders where customerID = 5000但它永远不会返回。我等了10分钟就放弃了。

最奇怪的是,同一个数据库上的其他查询,但在另一个表上,可以正常工作。删除where子句也没有帮助,所以看起来表格在某种程度上没有响应。它大约有30000行,所以它也不是最大的表。

我正在使用MS SQL SMS 2008 Express对抗在远程服务器上运行的SQL Server 2008 Express。

3 个答案:

答案 0 :(得分:5)

尝试通过绕过表上的任何锁 -

select * from tblOrders(nolock) where customerID = 5000

答案 1 :(得分:3)

听起来你的桌子已被锁定

运行此查询以查看对其进行的锁定。

USE master;
GO
EXEC sp_lock;
GO

但是表锁定是它自己的整个思想领域 这是sp_lock系统存储过程中的一些信息 http://msdn.microsoft.com/en-us/library/ms187749.aspx

当你找到锁时可以杀死它

KILL { session ID | UOW } [ WITH STATUSONLY ] 

http://msdn.microsoft.com/en-us/library/ms173730.aspx

答案 2 :(得分:0)

我同意其他人的意见,这很可能是锁定问题。默认情况下,对表的写访问仍然阻止读(仅)访问。

自SQL Server 2005以来,可以使用“行版本控制”来修复此问题。您需要更改数据库的设置才能启用此功能。

有关更详细的说明,请参阅手册:

http://msdn.microsoft.com/en-us/library/ms345124%28SQL.90%29.aspx