錯誤現象
在建立與伺服器的連線時出錯。連接到 SQL Server 2005 時,預設設定下不允許遠端連線...
(provider: 命名管道提供者, error: 40 - 無法開啟到 SQL Server 的連線)
現象:連線字串用 Server=127.0.0.1 失敗,改為 Server=. 或 Server=機器名 卻成功,僅 IP 連線失效。
根本原因
SQL Server 2005 預設僅啟用 Shared Memory 協定 (本機專用),TCP/IP 與 Named Pipes 預設停用,導致 IP 連線被拒。
完整解決步驟
1. 外圍應用設定器啟用遠端協定
- 開啟 SQL Server 外圍應用設定器 → 服務與連線的外圍應用設定器。
- 展開 Database Engine → 遠端連線 → 選 本地和遠端連線 → 勾選 同時使用 TCP/IP 和 Named Pipes → 套用。
2. 重啟 SQL Server 服務 (關鍵)
- 開啟 SQL Server Configuration Manager。
- 右鍵 SQL Server (MSSQLSERVER) → 重新啟動。
- 注意:不重啟設定不生效!
3. 檢查 VIA 協定衝突
若服務無法啟動,檢查 SQL Server 2005 網路組態 → 協定中 VIA 是否啟用,若是則停用 後再重啟服務。
詳細四大面向設定 (MSDN 摘要)
- SQL Server 啟用遠端連線 (同上步驟 1-2)。
- 啟用 SQL Server Browser 服務 (外圍設定器 → SQL Server Browser → 自動 + 啟動)。
- Windows 防火牆例外:sqlservr.exe (C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe)。
- Windows 防火牆例外:sqlbrowser.exe (C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe)。
驗證
修改連線字串為 Server=127.0.0.1 (或實際 IP) 測試連線,應成功。
常見誤區
- 只在外圍設定器勾選協定卻未重啟服務。
- 防火牆未放行 sqlservr.exe 與 sqlbrowser.exe。
- VIA 協定干擾服務啟動。
依照「啟用協定 → 重啟服務 → 防火牆例外 → 驗證」四步驟,可徹底解決 SQL Server 2005 Error 40 遠端連線問題。