SQL Server 2019:兩個別名指向同一個實例
我們有一台 SQL Server 2008 伺服器,我成功地將它遷移到裝有 SQL Server 2019 的新電腦上。
SQL Server 2008 伺服器名稱是 123.123.123.123。
它有兩個實例,名為:123.123.123.123 和 123.123.123.123\ABC。
SQL Server 2019 伺服器名稱為 CMP123456。
實例名為:CMP123456 和 CMP123456\ABC。
我想在 2019 伺服器上使用別名,因為不幸的是,一些程序員將實例名稱硬編碼到他們的程式碼中。
我創建了兩個別名:
[123.123.123.123 TCP 1433 localhost] [123.123.123.123\ABC TCP 1433 localhost\ABC]
當我使用 SSMS 登錄時,兩個別名都將我連接到 CMP123456。我無法創建將我連接到 CMP123456\ABC 的別名。
這些是我嘗試過的別名。
它們都因“找不到伺服器”錯誤而失敗:
[123.123.123.123\ABC TCP 1434 localhost\ABC] [123.123.123.123\ABC TCP 1433 CMP123456\ABC] [123.123.123.123\ABC TCP 1433 ABC]
$$ (No Alias) In this case I was hoping the one localhost alias would work for both instances. $$ 有任何想法嗎?不允許兩個別名是 SQL Server 2019 的錯誤/功能嗎?
對於前兩個別名,您都指向 1433,這是預設實例。這就解釋了為什麼兩者都轉到預設實例(埠號優先於 \instance 名稱)。
在您的別名配置中,使用實例名稱指定反斜杠或指定別名的埠名稱,以指向命名實例。
另外,請記住 SSMS 是 32 位應用程序,因此 SSMS 檢查 32 位別名配置(而不是 64 位配置)。
Aliases 是一個客戶端配置,因此您將在所有客戶端電腦(需要這些別名)上執行此操作。該資訊在系統資料庫中,因此您可以通過某種自動方式推出這些系統資料庫項。請注意,您可能希望同時推出 32 位和 64 位系統資料庫項(因此兩種類型的應用程序都存在別名)。32 位和 64 位系統資料庫項位於系統資料庫中的不同位置。
DNS 在這裡幫不了您,因為 DNS 條目不能有 \Instance 名稱。這就是為什麼有些人讓每個實例都有一個單獨的 IP 地址,然後讓所有實例都列在埠 1433(在他們的 IP 上),以便通過 DNS 配置“重新路由”。這對您沒有幫助,因為您已經有客戶端,包括連接字元串中的實例名稱。