6

完全なエラーは次のとおりです。SqlException: A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 1 - I/O Error detected in read/write operation)

アプリケーションのいくつかの単体テストで断続的にこのメッセージが表示されるようになりました (1100 以上の単体テストとシステム テストがあります)。ReSharper 4.1 でテスト ランナーを使用しています。

もう 1 つ: 私の開発マシンは VMWare 仮想マシンです。

4

5 に答える 5

5

私は何ヶ月も前にこれに出くわしました。肝心なのは、使用可能なポートが不足していることです。

まず、呼び出し元のアプリケーションで接続プールが有効になっていることを確認してください。

その場合は、SQL Server で使用可能なポートの数を確認してください。

何が起こっているかというと、プーリングがオフの場合、すべての呼び出しがポートを使用し、デフォルトではポートが期限切れになるまでに 4 分かかり、ポートが不足しています。

プールがオンになっている場合は、SQL Server のすべてのポートをプロファイルし、十分な数があることを確認して、必要に応じてポートを拡張する必要があります。

このエラーに遭遇したとき、接続プールがオフになっていて、ウェブサイトに適切な負荷がかかるたびにこの問題が発生しました. 負荷が最大で 2 人または 3 人だったので、開発中は見られませんでしたが、人数が 10 人を超えると、このエラーが発生し続けました。プーリングをオンにすると、修正されました。

于 2008-09-09T19:44:50.420 に答える
2

私も何ヶ月も前にこれに出くわしました。ただし、@ Longhorn213 の説明を軽視するつもりはありませんが、正反対の動作がありました。開発とテストでエラーを受け取りましたが、明らかに負荷がはるかに大きい本番環境ではエラーを受け取りませんでした。この問題は散発的であり、進行を大幅に遅らせることはなかったため、開発中の問題を許容することになりました。このエラーにはいくつかの理由が考えられると思いますが、自分で原因を突き止めることはできませんでした。

于 2008-09-09T19:49:58.767 に答える
1

また、このエラーに出くわし、データベース サーバーからの SQL サーバー接続を強制終了していることがわかりました。クライアント アプリケーションは、接続がまだアクティブであるという印象を受け、その接続を利用しようとしますが、接続が終了したために失敗します。

于 2008-09-09T21:31:03.080 に答える
0

これは私たちの環境で見られ、その一部をクエリの「NOLOCK」ヒントまでたどりました。NOLOCKヒントを削除し、スナップショットアイソレーションモードを使用するようにサーバーを設定しました。これらのエラーの頻度は大幅に減少しました。

于 2008-09-09T20:06:01.490 に答える
0

このエラーを数回確認し、さまざまな解決策を試しましたが、さまざまな成功を収めました。共通の根本的なテーマの 1 つは、エラーを発生させたシステムのメモリが不足していたことです。これは、Sql Server をホストしているサーバーが他の OS 以外のプロセスを実行している場合に特に当てはまります。デフォルトでは、SQL Server は可能な限りのメモリを取得しますが、他のプロセス/ドライバーにほとんど残らない場合です。これにより、動作が不安定になり、メッセージが断続的に表示される場合があります。他のプロセスがそれを必要とする可能性がある場合に備えて、いくらかのヘッドルームを残す最大メモリ用に SQL Server を構成することをお勧めします。例: 同じマシン上で SQL Server 開発者エディションのコピーを実行している開発マシン上の Visual Studio。

于 2012-04-24T22:37:38.950 に答える