常見錯誤訊息
An error has occurred while establishing a connection to the server.
(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 5 / 1326)
核心原因:**網路通訊協定未啟用、防火牆阻擋、遠端連線未開啟、服務未啟動、Browser 服務缺失**。
六大排查步驟 (依序執行)
1. 確認伺服器端 SQL Server 服務已啟動
- SQL Server Configuration Manager → SQL Server Services → 狀態 = Running。
- 或 `services.msc` 找 SQL Server (MSSQLSERVER/具名實例) 啟動。
- 快速驗證:客戶端執行 `sqlcmd -L` 查看是否列出該實例。
2. 啟用 TCP/IP 協定 (必要)
- Configuration Manager → SQL Server Network Configuration → 選擇實例 → TCP/IP → 右鍵啟用。
- 建議同時啟用 Named Pipes 相容舊版用戶端。
- 修改後必須重啟 SQL Server 服務生效。

3. Windows 防火牆開放連接埠
- 控制台 → Windows 防火牆 → 進階設定 → 輸入規則 → 新增規則 → 連接埠 → TCP → 1433 (預設實例)。
- 具名實例:另需開放 SQL Browser 服務 (UDP 1434) 及動態埠 (或設定固定埠)。
- 或新增程式例外:`sqlservr.exe`、`sqlbrowser.exe`。

4. SSMS 啟用遠端連線
- SSMS 連線本機實例 → 右鍵伺服器 → 屬性 → 連線 → 勾選 允許遠端連線至這部伺服器。
- 預設為關閉。

5. 啟用 SQL Server Browser 服務 (具名實例必備)
- Configuration Manager → SQL Server Services → SQL Server Browser → 右鍵啟動,啟動類型設為自動。
- 功能:解析具名實例對應的動態 TCP 埠,讓用戶端僅用
Server\Instance 連線。

6. 防火牆允許 sqlbrowser.exe
- 路徑通常:`C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe` (版本號依版本不同)。
- 防火牆新增「程式」例外指向此檔,或開放 UDP 1434。
進階:建立伺服器別名
Configuration Manager → 別名 → 新增別名 (如 MyAppDB) 指向實際實例/IP/埠。應用程式連線字串使用別名,未來遷移伺服器只需修改別名目標,無需改代碼/設定檔。

快速驗證指令碼
-- 客戶端機器開啟 CMD
sqlcmd -S 遠端IP\實例名 -U 帳號 -P 密碼 -Q "SELECT @@VERSION"
-- 成功顯示版本資訊即連線正常