SQL Server 連線失敗是開發與維運最常遇到的問題。連線方式分為「用戶端工具」(企業管理器、查詢分析器) 與「應用程式」(ASP、VB、.NET 透過 ODBC/OLE DB)。以下彙整高頻錯誤與對策:
一、用戶端工具連線失敗
1. 「SQL Server 不存在或存取被拒絕」
- 原因:伺服器名稱錯誤、網路不通、SQL Server 服務未啟動、通訊協定未啟用、防火牆阻擋。
- 排查:確認服務運行、
ping 主機、telnet 1433、組態管理員啟用 TCP/IP/Named Pipes、防火牆開放 1433/1434。
2. 「使用者 'sa' 登入失敗。原因: 未與信任的 SQL Server 連接關聯」
- 原因:伺服器驗證模式為「僅 Windows 驗證」,不接受 SQL Server 驗證帳號。
- 解決:SSMS → 伺服器屬性 → 安全性 → 選取「SQL Server 和 Windows 驗證模式」→ 重啟服務。
3. 「逾時已過期」
- 原因:網路延遲、封包遺失、伺服器負載過高、連線字串
Connection Timeout 設定過短。
- 解決:檢查網路品質、優化查詢、調大連線逾時值 (預設 15 秒)。
二、應用程式連線失敗 (ODBC/OLE DB/ADO.NET)
- 驅動程式版本不符:確認用戶端安裝的 MDAC / SQL Native Client / ODBC Driver 版本與伺服器相容。
- 連線字串錯誤:
Server、Database、UID/PWD 或 Trusted_Connection 拼寫錯誤。
- SPN / Kerberos 問題:雙躍點驗證失敗,需設定 SPN 或改用 SQL 驗證。
- 連線池耗盡:程式未正確關閉連線 (
Close/Dispose),導致池滿無法取得新連線。
通用診斷步驟
- 在伺服器本機用 SSMS 連線測試 (排除網路)。
- 用
telnet ip 1433 測試連接埠通達性。
- 檢查 SQL Server 錯誤記錄檔 (
ERRORLOG) 與 Windows 事件檢視器。
- 啟用用戶端追蹤 (ODBC 追蹤、OLE DB 服務元件追蹤) 取得詳細錯誤堆疊。