当前位置:  开发笔记 > 编程语言 > 正文

你如何处理SqlConnection中的传输级错误?

如何解决《你如何处理SqlConnection中的传输级错误?》经验,为你挑选了1个好方法。

在高容量.NET应用程序中,您可能会在尝试执行查询时看到此异常:

System.Data.SqlClient.SqlException:将请求发送到服务器时发生传输级错误.

根据我的研究,这是"刚刚发生"的事情,并没有太多可以防止它.它不会因错误查询而发生,通常无法复制.当由于某种原因与数据库的TCP连接变坏时,它在繁忙的OLTP系统中可能每隔几天就会出现一次.

我被迫通过解析异常消息,然后从头开始重试整个操作来检测此错误,以包括使用新连接.这些都不是很好.

有人有任何替代解决方案吗?



1> Tim Farley..:

我在另一个可能有一些用处的话题上发布了另一个问题的答案.答案涉及SMB连接,而不是SQL.然而,它是相同的,因为它涉及低级传输错误.

我们发现,在负载很重的情况下,远程服务器很容易在TCP层超时,因为服务器很忙.部分原因是TCP在Windows上重新传输数据的次数的默认值不适合我们的情况.

查看用于在Windows上调整TCP/IP的注册表设置.特别是你想看看TcpMaxDataRetransmissionsTcpMaxConnectRetransmissions.这些默认分别为5和2,尝试在客户端系统上稍微增加它们并复制负载情况.

别发疯了!TCP会在每次连续重传时使超时时间加倍,因此如果增加太多,则不良连接的超时行为会成为指数.我记得在大多数情况下,将TcpMaxDataRetransmissions提升到6或7解决了我们的问题.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有