1

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 からの接続が正常に機能するのはなぜでしょうか?

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 に答える