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

SQL Server 遠程連線失敗完整排查指南:從 Ping 到防火牆、協議、驗證模式

     編輯:關於SqlServer

分層排查路徑

  1. 物理連通:ping <ServerIP> 成功 → 網路通;失敗 → 檢查網卡、交換機、路由、VPN、防火牆封鎖 ICMP。
  2. 埠連通:telnet <ServerIP> 1433 (預設埠) → 閃爍游標 = 成功;「無法開啟連線」 → 進入第 3 步。
  3. 伺服器端服務與協議:
    • SQL Server 服務是否運行 (net start mssqlserver)。
    • 「伺服器網路實用程式」→ 啟用 **TCP/IP**,檢查埠號 = 1433,**未勾選「隱藏伺服器」**。
    • 若 OS 打 SP2+,Windows 防火牆需開放 1433 輸入規則 (或暫時關閉測試)。
    • netstat -an 確認 0.0.0.0:1433 LISTENING;否則打 SP3+ 熱修補。
  4. 客戶端協議:「用戶端網路實用程式」→ 啟用 TCP/IP,預設埠 1433 與伺服器一致。
  5. 連線測試:查詢分析器 (超時 15 秒) 優於企業管理器 (預設 4 秒);工具 → 選項 → 連線 → 調大登入逾時。
  6. 驗證模式陷阱:錯誤「用戶登入失敗」多因伺服器設為 **「僅 Windows 驗證」**。修正:企業管理器 → 伺服器屬性 → 安全性 → **「SQL Server 和 Windows」** → 重啟服務。或登錄表 HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode = 2 (混合模式)。

四大經典錯誤與對策

錯誤訊息核心原因關鍵排查
SQL Server 不存在或存取被拒IP/名稱錯誤、協議未啟用、防火牆、DNSping → telnet → 伺服器/用戶端網路實用程式 → hosts/DNS
無法連線,用戶 xxx 登入失敗僅 Windows 驗證模式改混合模式、重啟服務、補齊 BUILTIN\Administrators 登入
連線逾時慢速鏈路、預設逾時太短調大 EM/QA 登入逾時 (建議 20-30 秒)
Named Pipes 成功但 TCP 失敗協議順序/預設協議設定用戶端/伺服器網路實用程式調整協議順序;註冊表 ProtocolOrder

協議順序註冊表鍵值 (進階)

-- 用戶端
HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\ProtocolOrder
-- 伺服器端
HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\ProtocolOrder
-- 值範例 (TCP/IP 優先):
hex(7):74,00,63,00,70,00,00,00,00,00  

最佳實踐清單

  • 生產環境**僅開放 TCP/IP**,停用 Named Pipes/VIA/Shared Memory (本機除外)。
  • 非預設埠 (如 2433) 需在用戶端別名或連線字串顯式指定 Server=IP,Port。
  • 叢集/命名實例:SQL Browser 服務必須運行 (UDP 1434)。
  • 定期掃描 sys.dm_exec_connections 審計異常來源 IP。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved