间歇性"批次中止"例外

Pen*_*ren 5 .net sql-server exception

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

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

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

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

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

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

任何帮助将不胜感激.

Rem*_*anu 4

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