在已安裝 SQL Server 2008 的機器上安裝 SQL Server 2005 時,安裝程式「連接到服務器」步驟下拉列表為空,無法選擇本地實例。這是經典的「高版本優先安裝導致低版本實例註冊衝突」問題。本文深度剖析根因,提供標準化解決流程與驗證步驟。

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL 下,默認實例 MSSQLSERVER 已指向 2008 的實例 ID(如 MSSQL10.MSSQLSERVER)。2005 安裝程式讀取此鍵值,發現版本不匹配,隱藏該實例。核心原則:絕不選擇「默認實例」,強制創建獨立命名實例,避開註衝突。
MSSQLSERVER 或 SQL2008)。SQL2005、MSSQL2005 或項目代號 PROJ_DB。
安裝完成後,SQL Server Configuration Manager / SSMS 連接對話框中,本地服務器列表將顯示:
.\MSSQLSERVER (或 .\SQL2008) — SQL Server 2008 默認/命名實例.\SQL2005 — 新安裝的 SQL Server 2005 命名實例
風險:可能導致 2008 實例服務啟動失敗、報表服務損壞、連接字符串變更。生產環境嚴禁。
手動向 Instance Names\SQL 添加 2005 實例鍵值,並創建對應實例 ID 子項。極易遺漏依賴項(服務、WMI、防火牆規則),僅供實驗室環境參考。
安裝成功後,應用連接字符串需指定實例名:
Server=.;Database=MyDB;Trusted_Connection=True;
Server=.\SQL2008;Database=MyDB;Trusted_Connection=True;
Server=.\SQL2005;Database=MyDB;Trusted_Connection=True;
Server=127.0.0.1,1433;Database=MyDB;... -- 默認實例固定 1433
Server=127.0.0.1\SQL2005;Database=MyDB;... -- 命名實例需 SQL Browser 服務解析端口
SQL{版本號} 或 {項目代號}{版本號}(如 ERP2005、DW2008),一眼識別版本與用途。SQL Server 多版本共存的核心難點在於共享組件版本單一性與實例註冊表唯一性。通過「強制命名實例」這一標準化動作,即可完美規避安裝程式枚舉失敗問題,實現多版本實例穩定共存。建議將此流程納入基礎設施部署 SOP,所有涉及多版本共存的環境必須執行驗證。