关于连接数据库失败、SQLServer xxxx 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。)

问题描述:

          1、远程连接另一台服务器的SQL SERVER时报错:“SQLServer xxxx 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。)”。

          2、通过SQL管理器也就是SQL Management 连接远程数据库时正常,而通过vs,或在程序中的代码通过ado.net连接至远程数据库时报此错误。(重点)

 

 解决方案:

          首先检测服务器是否开启了远程连接,sql2005在外围应用配置器中,而2008,2012等在sql server配置器开启服务器实例的tcp/ip的协议,点启用。(这类问题往上N多答案,百度一大堆)。

 

         重点说说第二个问题,这个问题曾让我重装了一次系统,后来才彻底(半彻底)的找到解决方案,或说彻底找到原因!

         分析:1、首先从sql管理器连接远程服务器是没问题的,能正常连接到远程数据库,并且进行相应的操作,这证明了其实服务器一切配置是正常的。

                    2、在编程时,通过ado.net SqlConnection con  =New SqlConnection(Connectionstring); 当Connectionstring为远程连接字符串时,报此错误。通过vs的连接到数据库时提示同样的错误

                    3、而在别人的电脑操作时,或把代码编译后发布到其它服务器或电脑上运行时,此问题就不存在了。

 

         这个问题我出现过二次,真的是纠结了我大半天。经过最终分析,造成的原因是由于某些加速器造成的(迅游加速器,一款网络游戏的加速器),它们会修改本地的lsp。

 

        解决方案步骤:1、卸载巡游(或其它)加速器。

                                 2、删除加速器存放在c:\windows\system32下与c:\window\SysWOW64文件夹中与巡游(或其它)加速器相关的DLL (此步骤非常重要,曾经没有执行这步,死活不成功)。

                                 3、用管理员身份运行cmd netsh winsock reset 并回车(关键步骤)

                                 4、重启电脑

          综合:出现第二个问题时执行步骤所说的解决办法,一定记得步骤2里的DLL得删除干净,否则是无效的。

 

你可能感兴趣的:(.net日常问题解决方案锦集)