间歇性“批次中止”例外

时间:2012-08-03 15:36:12

标签: .net sql-server exception

我有一个针对SQL Server运行的.NET 4.0以数据库为中心的应用程序(胖客户端,WinForms)(主要是通过Linq到Sql,其中包含一些普通的ADO.NET),它部署在数百个环境中(每个环境由我们维护)客户的IT员工)。 该应用程序是对我公司遗留FoxPro产品的重写,该产品已使用多年。

该应用程序似乎对我们所有的客户都运行良好,除了一个,它有间歇性的例外情况如下:

  

System.Data.SqlClient.SqlException(0x80131904):超时已过期。操作完成之前经过的超时时间或服务器没有响应。

     

请求无法运行,因为批处理已中止,这可能是由客户端发出的中止信号引起的,或者是另一个请求在同一会话中运行,这会使会话忙。

我可以在网上找到关于此内容的所有内容(例如herehere)说这个问题是在SP1中解决的SQL Server 2005错误。但是,此客户正在使用SQL Server 2008 R2 Express (这已由我们公司验证;我们不仅仅是接受客户的话)。此外,我们没有使用连接池或分布式事务,因此我发现的链接似乎更不相关。

同样,问题是间歇性的(每天几次),并且发生在他们所有的各种工作站上(似乎表明它不是单个客户端的问题)。传统的FoxPro应用程序仍然存在于他们的环境中并且工作正常(针对完全相同的数据库),这似乎表明它不仅仅是网络或数据库服务器问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这些错误表明在服务器返回结果之前已达到CommandTimeout(默认为30秒)。这并不表示任何错误,也没有SP可以解决它。这是性能问题(很可能是缺少索引),必须作为性能问题进行调查。请尝试按照SQLCAT performance troubleshooting flowchart