已成功与服务器建立连接,但在登录前握手期间发生错误。 TCP提供程序,错误:0

问题描述 投票:1回答:2

尝试使用Windows XP专业版连接到“服务器”上托管的SQL Server 2000数据库时,我总是遇到上述错误。客户端电脑(我的工作环境)是Windows 7。

到目前为止,我已经使用Visual Studio 2010和Net framework 4.0开发了我的应用程序。一切正常。然后我安装了Visual Studio Express 2012 for Web和ASP.NET 4.5。

现在,当我尝试通过SqlConnection conConnection .Open()连接时,我得到了例外:

A connection was successfully established with the server, 
but then an error occurred during the pre-login handshake. 
(provider: TCP Provider, error: 0 - 
An existing connection was forcibly closed by the remote host.)

请注意第二条消息,因为我发现的信息非常少:远程主机强行关闭现有连接。

我还没有成功尝试过无数的解决方案,包括:

  • 各种连接字符串(Encrypt = false;)
  • netsh WinSock显示目录> winsocks.txt(似乎没有发现任何奇怪的应用程序)
  • netsh Winsock在客户端和服务器上重置
  • 从Visual Studio目标Net 4.0 / Net 4.5重建应用程序
  • 使用Visual Studio开发服务器或本地IIS Web服务器
  • IIS重置,多次重启Client和Server pc
  • 检查SQL Server 2000属性,连接,日志,分析器...

如果不拆卸Net 4.5(和Visual Studio 2012),我可以尝试下一步吗?


重要的附加信息

此相同的应用程序部署在生产服务器(Windows 7,IIS 7.5,Net framework 4.0)中。实际生产中的应用程序是使用Visual Studio 2010,net 4.0编译的,并且正确连接且没有错误(谢天谢地)!因此,在安装了VS Express 2012和Asp.net 4.5之后,我的客户端计算机上出现了问题。 (我也尝试用VS2010打开并重新编译解决方案,但我得到了同样的例外)。


编辑

出于测试目的,我已将使用VS 2012 / Net 4.0编译的应用程序部署到“生产”服务器(当然我从未安装过Net 4.5)。为此,我创建了一个新的Web站点,其中Application pool设置为Integrated pipeline,目标是Net Framework v4.0.30319。现在,此测试网站已成功连接到我的测试SQL Server数据库(SQL 2000)以及我的生产服务器数据库(SQL7)。线索:

问题仅存在于我的客户端电脑上,罪魁祸首是Net 4.5?


编辑2

通过Visual Studio 2010或2012 Server Explorer连接,数据源:Microsoft SQL Server(SqlClient)提供相同的异常(唯一的区别是现在是登录前握手超时)。

而是从Microsoft SQL Server Management Studio 2008连接正常工作! (服务器类型:数据库引擎;服务器名称:myserver \ SQL2000;身份验证:SQL Server身份验证;登录:密码)

如何从SQL Server Management Studio连接正常工作?

asp.net exception visual-studio-2012 sql-server-2000 handshake
2个回答
0
投票

您是否卸载了VS 2012以“修复”此问题?为什么不能在服务器上安装.NET 4.5或者根据Qcxswpoi的Marc Gravell帖子将DLL复制到服务器?


0
投票

我基本上遇到了同样的问题。 ASP.NET项目在Visual Studio 2010中的Win 7计算机上成功运行,但移动到运行Visual Studio 2012的Windows 8框。项目在运行时由VS转换,抛出上述SQL服务器错误消息。 SQL服务器是远程的,但两个客户端(Win 7和Win 8)在同一网络上是本地的。一个有效,另一个没有。

比较IIS中两台计算机上的设置,我发现Web应用程序使用的应用程序池的配置存在差异。 Identity属性默认为“ApplicationPoolIdentity”,但如果将其更改为“NetworkService”,则问题将得到解决。希望这会帮助其他人,因为我做了大量的搜索,发现没有任何指向这一点。

© www.soinside.com 2019 - 2024. All rights reserved.