我正在运行以下语句,它在SQL Server 2008本地工作,但是,在开发服务器上有SQL Server 2008 Express,并且在sql语句运行之后,我无法在表上执行SELECT语句我删除了记录。两个数据库都使用相同的表创建脚本创建。
"DELETE FROM [dbo].[tblMiddayMover] WITH (ROWLOCK) WHERE [idMiddayMover] = @IdMiddayMover"
此声明导致数据库挂起的原因是什么。
执行该语句后,以下SELECT语句会导致错误。
"SELECT * FROM [dbo].[tblMiddayMover] WHERE [fldActive] = 1"
我收到以下错误:
超时已过期。操作完成之前经过的超时时间或服务器没有响应。
我可以在任何其他表上执行select语句而没有任何问题。
我运行了建议的命令,这是输出。 alt text http://softwaredesignexcellence.com/capture.PNG
答案 0 :(得分:1)
您可能已经在语句周围创建了一个仍处于打开状态且尚未提交或回滚的事务。
我建议在第二个查询超时之前打开另一个窗口并执行“sp_who2”过程。这有一个列,它将明确告诉您查询是否被另一个同时运行的查询(它称为“BlkBy”)阻止。
答案 1 :(得分:0)
它解决了。实际上,我使用代码生成器来执行存储过程和数据层,这会在所有数据库调用周围创建一个事务层。但是,问题是它以.NET 3.5为目标,服务器设置为使用.NET 2.0。它不是数据库问题,因为它与服务器上的.NET版本存在不兼容的问题。