什么原因导致"内部连接致命错误"

Cha*_*ert 16 sql-server asp.net iis-6 sql-server-2000 asp.net-3.5

我在一台带有SQL 2000数据库后端的服务器上运行了许多ASP.Net网站(.Net v3.5).几个月来,我一直在接收看似随机的InvalidOperationExceptions,并显示消息"内部连接致命错误".有时间隔几天,而其他时间每天都有多处错误.

例外情况不仅限于一个站点,尽管它们共享业务和数据访问程序集.似乎总是从SqlClient.TdsParser.Run()抛出错误.它有时是从老式的直接SqlCommand.Execute()调用抛出的,而有时它是从Linq2Sql代码抛出的.

网络人员确信我们没有错误或数据包丢失.还有其他人经历过这个吗?这可能是司机的问题吗?到目前为止,我们还无法确定此异常的特定触发器.

我们在Windows Server 2003上运行II6.

Cha*_*ert 22

在忽略了这个问题几个月后,随着交通量逐渐增加,它开始达到临界质量.在重载下,包括一些爬行器,事情变得疯狂,这些错误不断涌入.

通过反复试验,我们最终找到了一些SqlCommand或LINQ查询,这些查询的SqlConnection在使用后没有立即关闭.相反,通过一些源于对LINQ连接的误解的草率编程,DataContext对象仅在请求结束时而不是立即处理(并且连接关闭).

一旦我们重构这些方法以立即关闭与C#"使用"块的连接(为下一个请求释放该池),我们就不再收到错误.虽然我们仍然不知道连接池会如此混淆的根本原因,但我们能够停止这种类型的所有错误.这个问题与我发布的另一个类似的错误一起解决了,在这里找到:为什么我的SqlCommand在它应该是一个int时返回一个字符串?