Sql-Server

SQL Server 2019:兩個別名指向同一個實例

  • July 26, 2021

我們有一台 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 配置“重新路由”。這對您沒有幫助,因為您已經有客戶端,包括連接字元串中的實例名稱。

引用自:https://dba.stackexchange.com/questions/296136