尝试使用 Windows XP pro 连接到托管在“服务器”上的 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 重置
- 从面向 Net 4.0 / Net 4.5 的 Visual Studio 重建应用程序
- 使用 Visual Studio 开发服务器或本地 IIS Web 服务器
- IIS 重置,重新启动客户端和服务器 pc variuos 时间
- 检查了 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)。为此,我创建了一个新网站,应用程序池设置为集成管道并针对 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 Auth;登录:密码)
SQL Server Management Studio 的连接如何正常工作?