首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 遠端連線錯誤排解:複寫需真實伺服器名稱、非預設連接埠與別名設定

     編輯:關於SqlServer

設定 SQL Server 複寫時,若使用非預設連接埠、命名執行個體且未啟用 Browser 服務,Management Studio 連線字串常寫成 ServerName,Port 格式。但複寫精靈要求真實伺服器名稱,拒絕別名、IP 或 ServerName,Port 格式,導致「SQL Server 無法連接到伺服器」與「複寫需要實際伺服器名稱」雙重錯誤。本文解析根因並提供別名解決方案。

錯誤現場重現

  • 執行個體:ABC\SQLINST(命名執行個體)
  • 連接埠:1369(非預設 1433)
  • Browser 服務:未啟用
  • SSMS 連線字串: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 的電腦)上設定別名,將「真實名稱」解析至正確連接埠:

  1. 開啟 SQL Server 組態管理員(32 位元與 64 位元皆需設定)。
  2. 展開 SQL Native Client 組態 → 別名。
  3. 右鍵 → 新增別名:
欄位填寫值
別名ABC\SQLINST(與真實伺服器名稱完全一致)
伺服器ABC\SQLINST 或 IP 位址
通訊協定TCP/IP
連接埠號碼1369
  1. 確定儲存。此時 SSMS 直接輸入 ABC\SQLINST 即可連線(無需加連接埠)。
  2. 以此別名連線後設定複寫,精靈讀取的伺服器名稱即為真實名稱,錯誤消失。

替代方案:啟用 SQL Server Browser 服務

在伺服器端啟用 SQL Server Browser 服務(預設連接埠 UDP 1434),用戶端以 ServerName\InstanceName 連線時,Browser 會自動解析動態連接埠。此法需防火牆開放 UDP 1434,且暴露執行個體資訊,安全性稍低。

驗證清單

  • ☐ 用戶端別名建立完成(32/64 位元皆設定)
  • ☐ SSMS 以別名 ServerName\InstanceName 連線成功
  • ☐ SELECT @@SERVERNAME 回傳真實名稱(不含連接埠)
  • ☐ 複寫精靈設定散發者/發行集無報錯

常見誤區

  • 在伺服器端設定別名 ❌:別名必須在發起連線的用戶端設定。
  • 只設定 64 位元別名 ❌:若 SSMS 為 32 位元(舊版),需同步設定 32 位元組態管理員。
  • 以 IP 位址當別名 ❌:別名必須等於 @@SERVERNAME 回傳值。

掌握「真實伺服器名稱」與「用戶端別名」的關係,能徹底解決複寫、連結伺服器、AlwaysOn 等進階功能的連線識別難題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved