1

尝试使用 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 的连接如何正常工作?

4

2 回答 2

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”,那么问题就解决了。希望这对其他人有所帮助,因为我进行了广泛的搜索,但没有发现任何指向这一点的东西。

于 2013-07-16T18:06:42.540 回答
0

您是否卸载了 VS 2012 来“修复”这个问题?为什么不能在服务器上安装 .NET 4.5 或根据 Marc Gravell 在http://marcgravell.blogspot.co.nz/2012/09/iterator-blocks-missing-methods-and-上的帖子将 DLL 复制到服务器网.html ?

于 2013-06-26T17:45:43.697 回答