Windows XP pro の「サーバー」でホストされている SQL Server 2000 データベースに接続しようとすると、常に上記のエラーが発生します。クライアントPC(私の作業環境)はWindows7です。
これまで、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.)
2 番目のメッセージに注意してください。これに関する情報はほとんど見つかりませんでした。「既存の接続がリモート ホストによって強制的に閉じられました。
次のような無数の解決策を試しましたが、まだ失敗しています。
- さまざまな接続文字列 (Encrypt=false; )
- netsh WinSock Show Catalog > winsocks.txt (ここには奇妙なアプリケーションは見当たりません)
- クライアントとサーバーの両方で netsh Winsock をリセットする
- Net 4.0 / Net 4.5 を対象とした Visual Studio からのアプリの再構築
- Visual Studio 開発サーバーまたはローカル IIS Web サーバーを使用する
- IIS のリセット、クライアント PC とサーバー PC の再起動が何度も発生する
- SQL Server 2000 のプロパティ、接続、ログ、プロファイラーを確認しました...
Net 4.5 (および Visual Studio 2012) をアンインストールせずに、次に何を試すことができますか?
重要な追加情報
この同じアプリケーションが運用サーバー (Windows 7、IIS 7.5、Net Framework 4.0) にデプロイされています。実際に運用されているアプリケーションは、Visual Studio 2010、ネット 4.0 でコンパイルされており、(ありがたいことに) エラーなしで正しく接続されています! そのため、VS Express 2012 と Asp.net 4.5 をインストールした後、クライアント マシンで問題が発生しました。(VS2010 でソリューションを開いて再コンパイルしようとしましたが、同じ例外が発生します)。
編集
テスト目的で、VS 2012 / Net 4.0 でコンパイルされたアプリケーションを「実稼働」サーバー (もちろん Net 4.5 をインストールしたことはありません) にデプロイしました。このために、アプリケーション プールを統合パイプラインに設定し、Net Framework v4.0.30319 をターゲットにして、新しい Web サイトを作成しました。 これで、このテスト Web サイトは、テスト用の SQL Server データベース (SQL 2000) と実稼働サーバー データベース (SQL7) に正常に接続されました。 ヒント:
問題は私のクライアント PC にのみ存在し、原因は Net 4.5 ですか?
編集2
Visual Studio 2010 または 2012 サーバー エクスプローラー経由で接続すると、データ ソース: Microsoft SQL Server (SqlClient) で同じ例外が発生します (唯一の違いは、現在はログイン前のハンドシェイク タイムアウトであることです)。
代わりに、Microsoft SQL Server Management Studio 2008 から接続すると問題なく動作します。(サーバーの種類: データベース エンジン、サーバー名: myserver\SQL2000、認証: SQL Server Auth、ログイン: パスワード)
SQL Server Management Studio からの接続が正常に機能するのはなぜでしょうか?