在C#里连接SQL 2008 报错:已成功与服务器建立连接 但登录前握手期间发生错误 网络名不可再用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#里连接SQL 2008 报错:已成功与服务器建立连接 但登录前握手期间发生错误 网络名不可再用相关的知识,希望对你有一定的参考价值。

在C#里连接SQL 2008 报错:已成功与服务器建立连接 但登录前握手期间发生错误 网络名不可再用。
装有数据库的服务器和程序不在一个局域网里,程序所在的局域网的另外一台电脑连接这个数据库,没有问题,说明不是tcp没打开,端口不正确或者是brower没打开等问题。
现在不知道为什么?

参考技术A LSP有没有问题 参考技术B 有很多种可能,网上很多是因为没配置信任。请参照该网址解决:http://blog.csdn.net/piaoshisun/article/details/6029174。 参考技术C 你的SQLSERVER企业管理器,服务问题 参考技术D 别用微软产品。坑太多 第5个回答  2015-09-26 和你问题一模一样,坐等解决,网上的教程,不靠谱。。

vs 或 Sql server2012连接Sql server时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误

以前连接是正常的,就这两天连不上了。(没有耐心的直接看末尾解决办法)

错误消息如下:

1.尝试读取或写入受保护的内存。这通常指示其他内存已损坏。(System.Data)

技术分享

2.已成功与服务器建立连接,但在登陆过程中发生错误。(provider:SSL Provider,error:0-接收到的消息异常,或格式不正确。)(Microsoft SQL Server)

技术分享

然后就Management崩溃了。

技术分享

 

没办法,那就使用vs当中的服务器资源管理器连接吧,结果可想而知,其中vs版本2008,2010,2012,2013均崩溃。无语,怎么办,联系服务器客服,说了半天,没办法,下了个Sql server2008的客户端 试试,没想到真连上了。

这不是高潮,高潮是我写代码发现ExecuteNonQuery()执行时报同样的错误,这怎么办,蛋碎。。。System.Data.SqlClient都用不了。愤怒,换成System.Data.OleDb,奇迹出现了,好了。

这一下提醒了我,然后就在vs的服务器资源管理器里设置数据源提供程序

技术分享

结果应该猜到了,正常了。

看到这里你一定以为纠结终于结束了,错,Sql server 2012里还是不可以啊,登陆界面选项里没哟设置数据源提供程序的地方,怎么办?看网上说使用Management连接其他数据库,比如连接Oracle,可以使用链接服务器连接,配置ODBC。坑爹的是ODBC都弄好的,测试都成功了,但这里就是失败。

技术分享

至今没搞定从Sql server 2012 Management Studio里连接,谁知道的帮我下,我更新到文章了,希望后面踩到这个坑的顺利些,不要在这上面浪费时间。

 

啰嗦了这么多,我先给出暂时的解决方案,后续再补充:

  1. 使用Sql server 2008客户端
  2. 在程序中使用System.Data.OleDb代替System.Data.SqlClient

Append:

感谢高海东的解决方案,经验证,确实是迅雷引起的异常,卸载掉迅雷的所有产品后,问题得到解决。

疑惑的是之前也在使用迅雷,或许是迅雷自动更新的某些组件引起的,记得当时win8刚出来时,迅雷也引起IE10崩溃。具体原理就不得而知了,先这样吧。

感谢 jaypgcool :也许是迅雷更改了winsock的某些设置,重置了一下winsock就OK了,命令:netsh winsock reset

以上是关于在C#里连接SQL 2008 报错:已成功与服务器建立连接 但登录前握手期间发生错误 网络名不可再用的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008启动时:已成功与服务器建立连接,但是在登录过程中发生错误。(provider:命名管道提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL

C#与SQL Server建立连接出错

在sql server 2000上用sa登录sql查询分析器的时候报错:无法打开用户默认数据库

sqlserver服务器名称有斜杠(\)怎么输入到C#工具里不报错

已成功与服务器建立连接,但是在登录前的握手期间发生错误。

sqlserver2008R2连接数据库异常,异常内容如下