「SQL Server 不存在或存取被拒絕」是資料庫管理員最常遇到的棘手錯誤之一,成因涵蓋網路、設定、防火牆、驅動程式等多層面。本文提供標準化 5 步驟排查流程,助您快速定位並解決問題。
步驟 1:驗證網路實體連通性
- Ping 測試:
ping <Server_IP> 與 ping <Server_Name>。
- IP 失敗 → 檢查網卡、交換機、路由器、網路線等硬體。
- IP 通、名稱不通 → DNS/Hosts 解析問題。編輯
C:\Windows\System32\drivers\etc\hosts 加入對應關係 (如 10.115.223.188 SQLServer01)。
- 防火牆排除: 暫時關閉雙方防火牆,或開放 TCP 1433、UDP 1434 連接埠。
步驟 2:Telnet 測試 SQL 服務監聽狀態
telnet <Server_IP> 1433
- 畫面閃爍游標 → 服務正常監聽 TCP 1433。
- 「無法開啟連線」 → SQL 服務未啟動、未啟用 TCP/IP、或監聽非預設連接埠。
步驟 3:檢查伺服器端網路設定 (SQL Server Network Utility)
- 啟動「伺服器網路公用程式」(開始 → 所有程式 → Microsoft SQL Server → 伺服器網路公用程式)。
- 確認「已啟用的通訊協定」包含 Named Pipes 與 TCP/IP。
- 雙擊 TCP/IP → 屬性:
- 預設連接埠應為 1433。
- 「隱藏伺服器」若勾選,用戶端無法透過瀏覽發現此實例 (安全性考量可開啟)。
步驟 4:檢查用戶端網路設定 (Client Network Utility)
- 啟動「用戶端網路公用程式」(開始 → 所有程式 → Microsoft SQL Server → 用戶端網路公用程式)。
- 同樣啟用 Named Pipes 與 TCP/IP。
- TCP/IP 屬性中確認預設連接埠 與伺服器一致 (1433)。
步驟 5:設定用戶端別名 (簡化連線字串)
- 在「用戶端網路公用程式」→「別名」頁籤 → 「新增」。
- 別名:自訂易記名稱 (如
MyAppDB)。
伺服器:實際伺服器名稱或 IP。
網路程式庫:選 Named Pipes 或 TCP/IP。
- 應用程式連線字串即可使用
Server=MyAppDB,避免硬編碼 IP。
常見遺漏檢查清單
- SQL Server 服務是否啟動 (MSSQLSERVER 或具名實例)
- SQL Server Browser 服務 (具名實例必要,UDP 1434)
- Windows 防火牆/第三方防火牆例外規則
- 用戶端驅動程式版本 (MDAC / SNAC / ODBC) 是否相容
- 具名實例連線格式:
Server=IP\InstanceName,Port
依循上述 5 步驟逐層驗證,90% 以上的連線拒絕問題皆能釐清根因並修復。若問題持續,建議啟用 SQL Server 錯誤記錄與用戶端網路追蹤 (NetMon / Wireshark) 進行深度封包分析。