疑難排解:連接被強制關閉
使用 TCP/IP 連接到 SQL Server 時,可能會發生此錯誤。
錯誤文字
這個錯誤可能會以下列格式出現:
TCP_PROV:現有的連接已被遠端主機強制關閉。
ProviderNum: 7,錯誤: 10054,ErrorMessage:「TCP 提供者: 遠端主機已強制關閉一個現存的連線。」
無法處理的例外狀況: 傳送要求至伺服器時發生傳輸層錯誤。(提供者: TCP 提供者,錯誤: 0 - 遠端主機已強制關閉一個現存的連線)。
此錯誤的常見原因
下表將列出此錯誤的常見原因和解決方案。
原因 |
解決方案 |
---|---|
用戶端目前是用不受支援的 SQL Server Native Client 版本進行連接。 |
請將用戶端電腦更新為 SQL Server Native Client 的伺服器版本。 |
故障的網路硬體正在卸除部分 TCP 傳輸。 |
請使用網路監視程式來分析 TCP SYN、ACK 和 FIN 訊息。 |
SynAttackProtect 設定可能正在卸除連接。 |
請參閱後面的「在 Windows Server 2003 SP1 上執行的連接可能會被強制關閉」一節。 |
在 Windows Server 2003 SP1 上執行的連接可能會被強制關閉
針對 Windows Server 2003 Service Pack 1 和更新版本上執行的 SQL Server Database Engine 執行個體,使用大量用戶端連接嘗試測試延展性時,如果要求到達的速度比 SQL Server 回應要求的速度快,Windows 可能會卸除連接。這是 Windows Server 2003 Service Pack 1 及更新版本的安全性功能,用於實作內送 TCP 連接要求的有限佇列。
若要解決這個問題,請使用 regedit.exe 公用程式來加入下列登錄機碼:
機碼 |
型別 |
名稱 |
值 |
---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ |
DWORD |
SynAttackProtect |
00000000 |
![]() |
---|
設定此登錄機碼可能會讓伺服器曝露在 SYN Flood、阻斷服務攻擊的威脅下。除非必要並了解安全性風險,否則請勿加入此登錄值。請於測試完成後移除此登錄值。 |