現在オフラインです。再接続するためにインターネットの接続を待っています

[SQL]INF: 複数の TCP/IP 接続要求でエラー 17832 が記録される

この記事は、以前は次の ID で公開されていました: JP154628
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。
概要
  重要: この文書はレジストリの編集に関する情報を含んでいます。レジストリの編集        を行う前に、もし問題が発生した場合にそれを復元する方法を理解していること        を確認してください。レジストリの復元に関する情報は、        Regedit.exe のヘルプ トピック "レジストリを復元する" または Rededt32.exe        のヘルプ トピック "レジストリ キーを復元するには" を参照してください。
SQL Server が同時に複数の TCP/IP 接続要求に遭遇した場合 (たとえば World Wide Web サーバでのケース)、その要求は TCP/IP Reset Frame の応答によって即座に拒絶されます。

この現象を見つけることは困難です。クライアント アプリケーションがエラー コードのハンドリングを行っている場合、Open() 関数のネイティブ エラー コードは 10061 (WSAECONNREFUSED) です。サーバでは、SQL エラー ログにエラー 17832 - "Unable to read login packet" が見られます。

この問題をプロトコル アナライザでトレースした場合、TCP Reset ビットのセットされた接続要求フレームが応答されるのを見ることができます。それは、フレームは受け取ったがサーバはその接続要求を処理するリソースを持っていないことを送信ステーションに知らせます。
詳細
Winsock アプリケーションは、Listen() 関数の呼び出しによってポート上の接続を受け入れます。Listen() 関数は、未処理接続キュー (pending-connection queue) の最大長を指定している backlog パラメータを持っています。Winsock の仕様は、最大 Listen()backlog を 5 と定義しています。5 を超過した場合、TCP/IP は Reset を発行します。

SQL Server 用の backlog は、Windows NT レジストリを変更することによって、多数の未処理接続を扱うように構成することができます。場合によっては、その変更によって接続リセットの問題を解決することができます。

警告.レジストリ エディタの不正な使用は、オペレーティング システムの再インストールを必要とするような深刻な問題を引き起こすことがあります。マイクロソフトでは、レジストリ エディタの不正な使用から生じた問題の解決を保証することはできません。レジストリ エディタはお客様自身の責任でご使用ください。

レジストリの編集方法に関する情報は、レジストリ エディタ (Regedit.exe) のヘルプ トピック "キーまたは値の名前を変更する" または Regedt32.exe のヘルプ トピック "レジストリ情報の追加と削除" と "レジストリを編集する" を参照してください。また、レジストリを編集する前には、必ずレジストリのバックアップを行うべきです。もし Windows NT を実行している場合は、システム修復ディスク (Emergency Repair Disk (ERD)) もまた更新すべきです。

  1. レジストリ エディタ (REGEDT32.EXE) を起動し、HKEY_LOCAL_MACHINE サブツリーの次のサブキーを探します。
         \Software\Microsoft\MSSQLServer\MSSQLServer
    注意.
    • SQL 4.21a では、HKEY_LOCAL_MACHINE サブツリー内の下記レジストリサブキーが対応します。
               \Software\Microsoft\SQLServer\Server
    • クラスタ環境で SQL Server 6.5 Enterprise Edition を仮想 SQL Server として実行している場合は、標準サブ キーではなく仮想サーバ キーを変更しなければなりません。標準サブ キーは次のとおりです。
               \Software\Microsoft\MSSQLServer\MSSQLServer 
      仮想サーバ キーは次のとおりです。
               \Software\Microsoft\MSSQLServer$VirtualServerName          \MSSQLServer$VirtualServerName          値の名前 :      WinsockListenBacklog          データ タイプ : REG_DWORD          データ :        190 
  2. MSSQLServer サブキーを選択し、編集メニューから値の追加を選択します。
  3. 次の値を入力します。
          値の名前 :      WinsockListenBacklog      データ タイプ : REG_DWORD      データ :        < 範囲は 1 から 0xFFFFFFFF >
    注意.データに高い値を設定した場合、その値は全般的なシステム リソースに影響します。Windows NT のすべてのアプリケーションのための最大 backlog は 100 です。この値のテストとして提案される方法は、値を 5 づつ増やして設定し、接続のリセットが止まるまでその結果を観察することです。
  4. OK をクリックし、レジストリ エディタを終了します。
  5. Windows NT を再起動します。
Listen() 関数に関する詳細は、Win32 SDK Programmer's reference を参照してください。

backlog パラメータと Windows NT に関する詳細は、Microsoft Knowledge Base の次の 2 つのアーティクルを参照してください。
113576 : WinSocket App's Reject Connection Requests with Reset Frames

127144 : Windows NT 3.5 Winsock Listen (Backlog) Parameter Limit
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 154628 (最終更新日 1999-05-20) をもとに作成したものです。

Internet Information Server IIS windows sockets
プロパティ

文書番号:154628 - 最終更新日: 02/11/2004 19:30:22 - リビジョン: 4.0

  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • kbinfo KB154628
フィードバック