SQL Server错误“已成功与服务器建立连接(provider:TCP提供程序,error:0-远程主机强迫关闭了一个现在的连接 Microsoft SQL Server,错误:10054)”
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
昨天有网友说他的SQL Server出现了错误,已成功与服务器建立连接,但是在登录过程中发生错误。(provider:TCP提供程序,error:0-远程主机强迫关闭了一个现在的连接。)(Microsoft SQL Server错误10054)如下图所示
SQL Server错误“已成功与服务器建立连接(provider:TCP提供程序,error:0-远程主机强迫关闭了一个现在的连接 Microsoft SQL Server,错误:10054)”
出现这个问题的主要原因就是要连接的数据库服务器端口未开放,开放端口即可!看自己是不是修改过端口啥的!
主要看一下TCP/IP协议的属性里的端口,操作如下;
打开SQL Server配置管理器,找到MSSQLSERVER的协议中,TCP/IP协议的属性,看看TCP/IP协议属性的IP1是否启用,顺便看看里面的端口号是不是你防火墙放行的端口!
其实这个还跟一个错误有点关系,显示的错误如下
已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: TCP 提供程序, error: 0 - 指定的网络名不再可用
解决办法:按住win+r键,输入cmd确定,然后输入重置命令:netsh winsock reset 重启电脑尝试!
当然,还有其他MicrosoftSQL Server,错误:10054的错误:
查报错代码微软相关文档解释说是TLS不匹配,TLS 1.0/1.1已经被禁用了,需要升级server端的sql的patch以支持TLS1.2,但是碍于是客户的生产环境不方便升级,而且后面安装了客户端测试机一模一样Patch却可以正常连接,说明不是这个问题,本来想等到停机窗口升级SQL了再说,好在最后找到方法了,只通过修改客户端组策略解决。
改客户端组策略解决,以下是解决方法:
在有问题的客户端运行gpedit.msc 打开的组策略编辑器,找到 计算机配置 -> 管理模板 -> 网络 -> SSL 配置设置-> SSL密码套件顺序,把TLS_DHE_* 开头的密码套件删除,重启客户机后问题解决
微软的解释是某些windows版本之后使用TLS_DHE密码套件会在密钥前加0,而之前的windows则不会,组策略中的这个密码套件顺序如果不设置的话貌似是随机使用密码套件(所以就是为啥装了另一台一模一样的客户端却好好的原因),当某些情况下用到TLS_DHE密码套件时,两边不匹配导致无法正常连接。
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

