ASP ページで「[DBNETLIB][ConnectionRead (recv()).]General network error」というエラーが発生するのはなぜですか
-
09-06-2019 - |
質問
ASP (クラシック) サイトでは、次のエラーが発生することがあります。
[DBNETLIB][ConnectionRead (recv()).]General network error.
ランダムであり、特定のページに接続されていないようです。SQL サーバーは Web サーバーから分離されており、私の推測では、両者の間の「リンク」が時々ダウンすることがあります。ルーター/スイッチの問題...それとも以前に他の誰かがこの問題に遭遇したことがありますか?
解決
あなたと同じセットアップ(つまり、別のWebサーバーとデータベースサーバー)を使用している場合、私は時々この問題を目にしましたが、常にサーバー間の接続の問題でした。通常はデータベースサーバーが再起動されているときですが、時々通信があるときです。システムのどこかに問題があります。ASP コード自体の問題によってこの問題が引き起こされたのを見たことがありません。そのため、この問題が特定のページに接続されておらず、ランダムに表示されるのはこのためです。
他のヒント
これは非常に一般的なエラーであり、診断がかなり混乱するため、このリソースをここでの議論に追加したいと思いました。これは、Microsoft がこのトピックに関してまとめた PowerPoint です。
このエラーは何度も見ました。ネットワークエラーなど、さまざまなことが原因で発生する可能性があります:)。
しかし、理由の 1 つは MS-SQL の組み込み機能である可能性があります。
この機能は DoS 攻撃を検出します。この場合、Web サーバーからのリクエストが多すぎます :)。
しかし、どうやってそれを修正したのか分かりません:(。
SQLサーバー構成マネージャー
TCP/IP を無効にし、共有メモリと名前付きパイプを有効にする
幸運を !
正確な解決策ではなく、同じ環境でもありません。ただし、VBA/Excel プログラムでこのエラーが発生します。問題は、SQL Server Management Studio (SSMS) で送信されていないトランザクションがハングしていることです。SSMS を閉じると、すべてが機能します。したがって、教訓は、トランザクションがハングすると sproc の進行がブロックされる可能性があるということです (明白な事実、私は知っています!)。これがここの誰かに役立つことを願っています。
コマンドプロンプトを開く - 管理者として実行し、クライアント側で次のコマンドを入力します。
netsh advfirewall set allprofiles state off
FWIW、Excel からこのエラーが発生しました。これは、SSMS 内で正常に動作する EXEC でハングします。以前、「パラメーター スニッフィング」とキャッシュされたクエリ プランが不適切なために、SSMS 内では問題のないクエリを見たことがあります。SP を少し編集すると問題が解決し、その後は元の形式で問題なく動作しました。誰かがこのシナリオに遭遇したかどうかも知りたいです。古き良きものを試してみてください OPTION (OPTIMIZE FOR UNKNOWN)
:)