INF:發生多個 TCP\IP 連線請求時 SQL 會記錄 17832

文章翻譯 文章翻譯
文章編號: 154628 - 檢視此文章適用的產品。
本文曾發行於 CHT154628
重要:本文包含編輯登錄的資訊。在編輯系統登錄之前,請確定萬一發生問題時,您知道如何復原系統登錄。若需如何復原的相關資訊,請參閱 Regedit.exe 中的〈還原登錄〉說明主題,或 Regedt32.exe 中的〈還原登錄機碼〉說明主題。
全部展開 | 全部摺疊

結論

如果多個一起發生的 TCP/IP 連線請求同時連上 SQL Server (例如全球資訊網WWW伺服器的情形),則 SQL Server 會回應「TCP/IP 重設封包」,快速拒絕這些請求。

此徵狀很難偵測。如果用戶端應用程式包含錯誤碼處理,則 Open() 函數的原生錯誤碼是 10061 (WSAECONNREFUSED)。在伺服器上,SQL 錯誤記錄檔中則會出現錯誤 17832 - "Unable to read login packet" (無法讀取登入封包)。

如果您使用通訊協定解析程式來追蹤此問題,就可以看見伺服器已經以「TCP 重設」 位元集來回覆某些連線請求封包,告訴傳送封包的工作站,表示伺服器已經收到它所傳送的封包,但是伺服器沒有資源可以處理其連線請求。

其他相關資訊

Winsock 應用程式會經由呼叫 Listen() 函數來接受通訊埠的連線,此函數具有一個積存 (Backlog) 參數,可以設定待處理連線佇列的最大長度。Winsock 規格定義最大的 Listen() 積存是 5,超過 5 的時候,TCP/IP 就會發出「重設」封包。

您可以經由修改「Windows NT 登錄」來設定 SQL Server 的積存 (Backlog) 參數,以便處理較多的待處理連線數目。在某些案例中,重設連線的問題可以經由修改登錄獲得解決。

警告:不當使用「登錄編輯器」可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 不保證可以解決不當使用「登錄編輯器」所造成的錯誤。請自行承擔使用「登錄編輯器」的風險。

如需有關編輯系統登錄的資訊,請檢視「登錄編輯器」(Regedit.exe) 中的〈變更機碼和數值〉說明主題,或是檢視 Regedt32.exe 中的〈新增及刪除登錄中的資訊〉與〈編輯登錄資料〉說明主題。如需編輯登錄的詳細資訊,請檢視「登錄編輯器」(Regedit.exe) 的〈變更機碼與數值〉說明主題,或檢視 Regedt32.exe 中的〈新增及刪除登錄中的資訊〉與〈編輯登錄資料〉說明主題。請注意:您應該先將登錄備份,再開始編輯。 如果執行的是 Windows NT ,也應更新「緊急修復磁片」(ERD)。

  1. 啟動「登錄編輯器」(REGEDT32.EXE),然後在 HKEY_LOCAL_MACHINE 子樹狀結構下找出下面登錄子機碼:
          \Software\Microsoft\MSSQLServer\MSSQLServer
    
    注意:

    1. SQL 4.21a 的 HKEY_LOCAL_MACHINE 子樹狀結構下相對應的登錄子機碼是:
               \Software\Microsoft\SQLServer\Server
         
    2. 如果SQL Server 6.5 Enterprise Edition是以Virtual SQL Server執行在叢集式環境中,您就必須變更虛擬伺服器機碼,而不是變更一般的:
               \Software\Microsoft\MSSQLServer\MSSQLServer
         
      此虛擬伺服器機碼是:
               \Software\Microsoft\MSSQLServer$VirtualServerName
               \MSSQLServer$VirtualServerName
      
               數值名稱:WinsockListenBacklog
               資料類型:REG_DWORD
               資料:    190
         
  2. 選取 MSSQLServer 子機碼。從 [編輯] 功能表中,選取 [新增值]。
  3. 輸入下面各項:
          Value Name:WinsockListenBacklog
          Data Type:REG_DWORD
          Data:   <Range is 1 to 0xFFFFFFFF>
    
    注意:如果資料值設的太高會影響系統的總體資源。Windows NT 3.51 所有應用程式的總體積存最大是 100,而 Windows NT 4.0 所有應用程式的總體積存最大是 200。我們建議以 5 為間隔,漸漸增加這個值來做測試,觀察其結果,直到連線重設問題停止。
  4. 按一下 [確定],結束「登錄編輯器」。
  5. 關閉並重新啟動 Windows NT。
有關 Listen() 函數的其他資訊,請參考《WIN32 SDK Programmer's reference》。

有關 Windows NT 與積存 (Backlog) 參數的其他資訊,請參閱下列兩篇 Microsoft Knowledge Base 文件:
113576 : WinSocket App's Reject Connection Requests with Reset Frames

127144 : Windows NT 3.5 Winsock Listen (Backlog) Parameter Limit

?考

本文件是根據 Microsoft Knowledgebase 文件編號 Q154628 翻譯的. 若要參考原始英文文件內容, 請至以下網址:

http://support.microsoft.com/support/kb/articles/Q154/6/28.asp

屬性

文章編號: 154628 - 上次校閱: 2004年9月22日 - 版次: 2.2
這篇文章中的資訊適用於:
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
關鍵字:?
kbnetwork kbhowto kbhowto KB154628
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com