現象
Win2008 + SQL 2005,本機連線正常,遠端用戶端報錯:
「未找到或無法存取伺服器,請驗證執行個體名稱正確且已設定允許遠端連線。」(Provider: Named Pipes Provider, Error: 40)
核心檢查清單
- 防火牆:暫時關閉或開放 TCP 1433 / UDP 1434 埠。
- 啟用遠端連線:同錯誤 18452 處理方式,外部應用程式設定器 → TCP/IP + Named Pipes。
- 混合模式驗證:SSMS → 伺服器屬性 → 安全性 → SQL Server 和 Windows 驗證模式。
- 建立 SQL 登入:
EXEC sp_password NULL, 'sa123456', 'sa'; 並啟用 sa。
- 正確的伺服器名稱:
Server=MachineName\SQLEXPRESS(非 localhost / 127.0.0.1)。
- TCP/IP 通訊協定啟用:SQL Server 設定管理員 → 網路設定 → TCP/IP → 啟用,IPAll 埠設 1433。
- Browser 服務啟動:SQL Server Browser 服務設為自動並啟動(命名執行個體必須)。
常見誤區
- 以為 Win2008 不相容 SQL 2005,實則為預設安全性原則更嚴格。
- 連線字串用
localhost 導致用戶端解析到自己機器。
- IIS 應用程式集區 .NET 版本與連線字串不匹配(可清除 machine.config 中舊連線)。
驗證指令
-- 伺服器端檢查監聽埠
EXEC xp_readerrorlog 0, 1, 'Listening';