升級至 SQL Server 2005 是許多企業邁向現代化資料平台的關鍵一步。本文彙整 12 個最常被詢問的升級疑慮,提供專家級解答與實務建議,助您規避遷移風險。
A: 可執行,但無法編輯。 DTS 已被 SSIS (SQL Server Integration Services) 取代。SQL Server 2005 仍支援執行現有 DTS 套件,並提供「DTS 遷移精靈」協助轉換為 SSIS 封裝。但 ActiveX 腳本、特定 COM 元件等可能無法自動升級,需人工重寫。建議:以 SSIS 重寫為長遠規劃,利用 SSIS 豐富的控制流/資料流元件,開發效能與維護性遠勝 DTS。
A: 常見於資料庫主金鑰 (DMK)、憑證、非對稱金鑰保護鏈斷裂。解決步驟:
master 資料庫主金鑰存在:SELECT * FROM master.sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##'master 建立主金鑰:CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongPassword'OPEN MASTER KEY DECRYPTION BY PASSWORD = 'SourcePassword'; ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;sys.certificates、sys.asymmetric_keys 狀態,必要時重新建立。A: 推薦 備份/還原 或 分離/附加。若跨版本升級 (2000→2005),必須使用備份/還原,因分離的資料庫檔案無法直接附加至高版本。大型資料庫建議:
WITH COMPRESSION,需 2008+,2005 需第三方工具)A: 升級後 必須更新統計資料 (sp_updatestats 或 UPDATE STATISTICS ... WITH FULLSCAN) 並 重建索引。新版本優化器行為不同,舊執行計畫可能失效。關鍵動作:
DBCC FREEPROCCACHE 清除計畫快取sys.dm_exec_query_stats 監控高耗時查詢FORCE_LEGACY_CARDINALITY_ESTIMATION 資料庫範圍配置 (2014+) 緩衝過渡期A: 2005 引入重大架構變更:
A: 可。 支援並存多個具名實例 (Named Instances),每個實例獨立二進位、系統資料庫、服務帳號。預設實例僅能有一個。注意:共用元件 (Shared Components) 僅保留最高版本,低版本實例可能受影響,建議同版本並存或使用虛擬化隔離。
A: 可,但強烈不建議。 XP 在 SQL Server 行程空間執行,崩潰風險高,且 64 位元版本相容性差。微軟已宣佈棄用,請改用 CLR 整合 (CREATE ASSEMBLY) 實現自訂邏輯,享受記憶體保護、程式碼存取安全性 (CAS) 與除錯支援。
A: 核心原則:伺服器層級建立登入 (Login),資料庫層級建立使用者 (User) 並映射。範例:
-- 伺服器層級
CREATE LOGIN AppUser WITH PASSWORD = 'ComplexP@ssw0rd!', DEFAULT_DATABASE = MyDB;
-- 資料庫層級
USE MyDB;
CREATE USER AppUser FOR LOGIN AppUser;
ALTER ROLE db_datareader ADD MEMBER AppUser;
-- 或授予精細權限
GRANT SELECT, INSERT, UPDATE ON SCHEMA::dbo TO AppUser;
A: 可。 參考 Q6,不同版本實例可並存。但注意:用戶端驅動程式 (ODBC/OLE DB/SNAC) 需安裝相容最高版本,連接字串指定具名實例 (如 Server\SQL2005) 即可區分。
A: 典型案例:
EXTERNAL, PIVOT, UNPIVOT) 導致舊物件名稱失效,需加方括號 [External] 或重命名。=*、*= 在相容性層級 90 下失效,必須改寫為 ANSI LEFT/RIGHT JOIN。sysobjects、syscolumns 等系統表的程式碼失效,需改查目錄檢視 (sys.objects, sys.columns)。A: 主要為 參數嗅探 與 計畫快取汙染。同一預存程序因首次執行參數值不同,產生非最佳計畫並被重複使用。緩解措施:
OPTION (RECOMPILE) 或 OPTIMIZE FOR (@param = 'typical_value')OPTIMIZE FOR UNKNOWNA: 不能直接附加/還原。 資料庫檔案版本號不可逆。唯一路徑:腳本產生 (Schema + Data) → 在 2000 執行腳本重建,或使用 SSIS/DTS 導出資料。工具:Generate Scripts 精靈 (含資料)、bcp、SSIS 匯入/匯出精靈。
專家建議總結: 升級前務必建立完整測試環境,跑回歸測試、效能基準測試;制定回滾計畫;利用 升級顧問 (Upgrade Advisor) 掃描潛在相容性問題;分階段遷移:先開發/測試環境,再預生產,最後生產。