前言
2017 年在 Windows 7 開發機安裝 SQL Server 2008 R2 開發版,踩中 **Visual Studio 2008 SP1 相依性鏈** 與 **命名實例衝突** 兩大坑,耗時半天。記錄完整排坑過程,供後人參考。
坑點 1:安裝程式檢測到舊版 VS2008,要求升級 SP1
現象
「偵測到舊版 Visual Studio 2008,請先安裝 Service Pack 1。」
嘗試 1:直接安裝 VS2008 SP1 (ISO)
「原版本安裝不完整,或已安裝修補程式,請先執行 Visual Studio 2008 Service Pack Preparation Tool。」
嘗試 2:執行 Preparation Tool
「缺少 XXX 檔案。」
終極解法:完全移除 VS2008 → 重裝 VS2008 → 裝 SP1
- 控制台解除安裝 VS2008 → **報錯缺少檔案,失敗**。
- 下載第三方 **Uninstall Tool** (外國開發者提供) → 執行過程報錯,但**最終提示移除成功**。
- 開始選單 VS2008 項目點擊 → 「程式不存在」確認已移除。
- 重新執行 VS2008 Setup → **順利完成**。
- 安裝 VS2008 SP1 → **順利完成**。
- 再跑 SQL Server 2008 R2 安裝 → **通過先決條件檢查**。
教訓:Windows 元件登錄不一致時,官方解除安裝常失敗;第三方清理工具雖報錯但常能完成核心清理。
坑點 2:SQL Server 2008 R2 安裝末期報錯 msmdctr.ini 遺失
現象
安裝進度條跑到近尾聲,彈出「msmdctr.ini 檔案不存在」,安裝失敗。
根因
安裝預設**預設執行個體** (MSSQLSERVER),但機器已安裝 **SQL Server 2005 預設執行個體**。兩個預設實例同名衝突,導致 Analysis Services (msmdctr.ini 屬於 AS) 註冊失敗。
嘗試:移除 SQL 2008 R2 重裝命名實例
準備移除時發現:
- SQL Server 2005 管理工具開啟報「執行個體名稱無效」。
- 但**已安裝失敗的 SQL 2008 R2 竟能正常啟動服務**,且資料庫引擎功能可用 (能掛載資料庫、查詢)。
結果
**目的達成** (僅需掛載 2008 R2 格式資料庫) → **收工**,不再追求完美安裝。
經驗總結與建議
- 乾淨環境:開發機盡量避免多版本 SQL Server/VS 共存;使用 Hyper-V/VMware/Windows Sandbox 隔離環境。
- 命名實例:生產/開發環境**統一使用命名實例** (如
MSSQL2019),完全避免預設實例衝突。
- 安裝順序:VS → VS SP1 → SQL Server (依版本順序)。
- 離線安裝包:下載完整 ISO (含所有先決條件),斷網安裝避免線上下載失敗。
- 記錄日誌:安裝失敗時查
%ProgramFiles%\Microsoft SQL Server\100\Setup Bootstrap\Log\ 詳細錯誤碼。
現代替代方案 (2024+)
- SQL Server 2022 Developer Edition:免費、支援 Win 10/11、Linux、容器、最新功能 (Ledger、Parameter Sensitive Plan Optimization)。
- Azure SQL Edge / LocalDB:輕量級、容器化、零配置。
- Docker:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P@ssw0rd" -p 1433:1433 mcr.microsoft.com/mssql/server:2022-latest 秒級啟動、零污染宿主機。