SQL Server突发“An existing connection was forcibly closed”错误求助
针对「An existing connection was forcibly closed」错误的排查方案
TLS版本兼容性排查
Win2012默认启用TLS 1.0/1.1,Win2019服务器如果近期打了安全补丁,可能会禁用这些旧TLS版本,导致加密协商失败。可以在Win2012服务器上手动启用TLS 1.2:- 运行
regedit打开注册表编辑器 - 定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols - 右键新建「项」命名为
TLS 1.2,在其下再新建Client和Server两个子项 - 分别在
Client子项中新建两个DWORD值:DisabledByDefault设为0,Enabled设为1 - 重启服务器后重新测试网站连接
- 运行
SQL Server连接配置检查
- 登录Win2019服务器,打开SQL Server配置管理器,确认SQL Server服务处于运行状态,且TCP/IP协议已启用
- 检查TCP端口(默认1433)是否未被修改,对应的Windows防火墙入站规则是否仍允许该端口的流量
- 查看SQL Server错误日志,找是否有连接拒绝、端口监听失败之类的记录
调整连接字符串加密设置
在ASP.NET的连接字符串里明确添加加密相关参数,比如Encrypt=true;TrustServerCertificate=true;(如果你们没有配置证书验证),避免因加密协商过程中出现不兼容导致连接被强制关闭网络连通性测试
- 在Win2012服务器上运行
telnet <SQL服务器IP> <端口号>,测试端口是否能正常连通 - 检查两台服务器之间的所有防火墙(包括硬件防火墙和Windows自带防火墙),确认近期没有新增阻挡SQL端口的规则
- 用
tracert <SQL服务器IP>测试网络链路是否有异常节点,或者用pathping查看是否存在丢包情况
- 在Win2012服务器上运行
SQL Server资源与连接限制排查
- 登录SQL Server执行
sp_configure 'max server connections',确认当前连接数是否达到了上限 - 查看Win2019服务器的CPU、内存、磁盘IO使用率,若资源过载,SQL Server可能会主动关闭闲置或新的连接
- 登录SQL Server执行
内容的提问来源于stack exchange,提问作者user2435866
相关产品推荐
相关产品推荐

