我的SQL查询非常简单select * from tblOrders where customerID = 5000
但它永远不会返回。我等了10分钟就放弃了。
最奇怪的是,同一个数据库上的其他查询,但在另一个表上,可以正常工作。删除where子句也没有帮助,所以看起来表格在某种程度上没有响应。它大约有30000行,所以它也不是最大的表。
我正在使用MS SQL SMS 2008 Express对抗在远程服务器上运行的SQL Server 2008 Express。
答案 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 ]
答案 2 :(得分:0)
我同意其他人的意见,这很可能是锁定问题。默认情况下,对表的写访问仍然阻止读(仅)访问。
自SQL Server 2005以来,可以使用“行版本控制”来修复此问题。您需要更改数据库的设置才能启用此功能。
有关更详细的说明,请参阅手册:
http://msdn.microsoft.com/en-us/library/ms345124%28SQL.90%29.aspx