首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 連線常見錯誤分析 (三):連線逾時排查與解決

     編輯:關於SqlServer

錯誤現象

錯誤訊息:「連線逾時」或「Connection Timeout Expired」。表示用戶端**已找到伺服器並嘗試建立連線**,但超過預設等待時間仍未完成交握。

常見原因

  • 跨網段/Internet 連線,延遲高、頻寬低 (如遠端管理、VPN)。
  • 區域網路擁塞、封包遺失、防火牆深度檢查導致延遲。
  • SQL Server 負載過高,回應緩慢 (如長時間查詢阻塞、記憶體壓力)。
  • 用戶端預設逾時值過短 (企業管理員 4 秒、查詢分析器 15 秒)。

解決方案:調整用戶端逾時設定

企業管理員

  1. 工具 → 選項 → 進階 索引標籤。
  2. 「連線設定」區塊 → 「登入逾時 (秒)」輸入較大值 (建議 20-30 秒)。

查詢分析器

  1. 工具 → 選項 → 連線。
  2. 將「登入逾時」設為較大值 (建議 30-60 秒)。

ADO/ADO.NET 連線字串

-- ADO (Classic ASP/VB6)
Conn.ConnectionTimeout = 30  ' 秒

-- ADO.NET (C#/VB.NET)
"Server=myServer;Database=myDB;User=sa;Pwd=***;Connection Timeout=30;"

進階排查清單 (調整逾時仍失效)

  1. 基本連通性:ping <Server IP> 成功;telnet <IP> 1433 顯示空白閃爍游標 (TCP 連線成功)。
  2. IP 直連註冊:企業管理員 → 右鍵 SQL Server 群組 → 新增註冊 → 輸入 IP → SQL Server 驗證 → sa/密碼。
  3. 伺服器端 WinSock Proxy (舊版/特殊網路拓撲):
    • 伺服器網路公用程式 → 啟用 WinSock Proxy → 代理位址填伺服器 IP、連接埠 1433。
  4. 用戶端別名設定:
    • 用戶端網路公用程式 → 別名 → 新增 → 別名自訂、網路庫選 TCP/IP、伺服器名稱填遠端 IP/實例名。
  5. 防火牆/IDS/IPS:確認 1433 (TCP) 雙向放行;若為具名實例,需開放 SQL Browser (UDP 1434) 及動態連接埠範圍。
  6. SQL Server 錯誤記錄:檢視是否有「登入失敗」、「連線重置」、「記憶體不足」等訊息。

最佳實務建議

  • 生產環境應用程式 **務必在連線字串明確設定 Connection Timeout** (建議 30 秒以上),勿依賴預設值。
  • 長時間執行的查詢/批次作業,應調整 **Command Timeout** (非 Connection Timeout),避免執行中途被切斷。
  • 監控伺服器 sys.dm_exec_connections、sys.dm_os_wait_stats,偵測連線建立延遲根因。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved