設定 SQL Server 複寫時,若使用非預設連接埠、命名執行個體且未啟用 Browser 服務,Management Studio 連線字串常寫成 ServerName,Port 格式。但複寫精靈要求真實伺服器名稱,拒絕別名、IP 或 ServerName,Port 格式,導致「SQL Server 無法連接到伺服器」與「複寫需要實際伺服器名稱」雙重錯誤。本文解析根因並提供別名解決方案。
ABC\SQLINST(命名執行個體)1369(非預設 1433)ABC\SQLINST,1369 → 連線成功錯誤 1:SQL Server 無法連接到伺服器 "ABC\SQLINST,1369"。
錯誤 2:SQL Server 複寫需要有實際的伺服器名稱才能連接到伺服器。
不支援透過伺服器別名、IP 位址或任何其他備用名稱進行連接。
請指定實際的伺服器名稱 "ABC\SQLINST"。
複寫內部連線使用 SSMS 登入時的伺服器名稱屬性(sys.servers.name、@@SERVERNAME)。若您以 ServerName,Port 連線,該屬性值即為帶連接埠的字串,複寫邏輯判定非「真實伺服器名稱」而拒絕。真實名稱必須為 ServerName\InstanceName 格式,不含連接埠。
在啟動複寫設定的用戶端機器(執行 SSMS 的電腦)上設定別名,將「真實名稱」解析至正確連接埠:
| 欄位 | 填寫值 |
|---|---|
| 別名 | ABC\SQLINST(與真實伺服器名稱完全一致) |
| 伺服器 | ABC\SQLINST 或 IP 位址 |
| 通訊協定 | TCP/IP |
| 連接埠號碼 | 1369 |
ABC\SQLINST 即可連線(無需加連接埠)。在伺服器端啟用 SQL Server Browser 服務(預設連接埠 UDP 1434),用戶端以 ServerName\InstanceName 連線時,Browser 會自動解析動態連接埠。此法需防火牆開放 UDP 1434,且暴露執行個體資訊,安全性稍低。
ServerName\InstanceName 連線成功SELECT @@SERVERNAME 回傳真實名稱(不含連接埠)@@SERVERNAME 回傳值。掌握「真實伺服器名稱」與「用戶端別名」的關係,能徹底解決複寫、連結伺服器、AlwaysOn 等進階功能的連線識別難題。