升級前檢查清單
| 項目 | 要求/操作 |
| 版本路徑 | SQL 2000 Enterprise/Standard SP3+ → SQL 2005 Enterprise/Developer/Standard |
| 物理安全 | 專用機房、防火牆、禁用 NTLM、備份異地存放 |
| 硬件 | CPU ≥ 600 MHz(建議 1GHz+),內存 ≥ 512 MB(建議 1GB+),磁盤空間充足 |
| 軟件 | IE 6.0 SP1+,IIS 5.0+(SSRS 需),.NET 2.0(SSRS 需) |
| 系統庫自增長 | master/model/msdb/tempdb 設置自動增長,預留空間 |
| max worker threads | 升級前改為 0(讓引擎自動計算最優值) |
| master 登錄信息 | 確保所有實例 master 庫有登錄記錄(還原時需用) |
| 禁用啟動存儲過程 | 防止升級過程中阻塞服務啟動 |
| 停止復制 | 確保復制日志為空 |
| 退出所有應用 | 含依賴 SQL 的服務,防止連接導致升級失敗 |
| 全備份 | 所有數據庫文件完整備份,制定回滾計劃 |
| 清理復制元數據 | 刪除 Msrpl_commands、Msmerge_contents 等 |
| 腳本化復制/作業/維護計劃/DTS | 便於升級後重建 |
| 只讀庫改讀寫 | 升級後再改回 |
| 運行升級顧問 | 按報告修復兼容性問題 |
升級執行步驟
- 斷開用戶連接
- 停止復制
- 禁用啟動存儲過程
- 確定升級實例/數據庫
- 選擇組件升級/遷移工具
- 通過 Setup 日志監控進度
- 驗證復制/作業/維護/DTS 腳本是否就緒
升級後驗證
- 按升級顧問報告收尾
UPDATE STATISTICS 更新統計信息
- 全文索引填充、隔離級別、Log Shipping 重配
- 驗證 Agent 作業、維護計劃、復制、連接性
- 安全審計:服務帳戶、認證模式、強密碼
- T-SQL 檢查:存儲過程不自動升級,
UPDATETEXT 不支持,新關鍵字(PIVOT/UNPIVOT/REVERT/TABLESAMPLE)
群集升級步驟(關鍵點)
- 停止復制,數據/日志文件改自增長,開啟自動更新統計
- 記錄各服務啟動賬號,域中建管理組
- 所有節點安裝 .NET 2.0
- 群集管理器將所有組移至同一節點,拷貝安裝文件或放光盤
- 運行
Setup.exe,注意:選群集安裝項、配置服務啟動賬號
- 完成後將兼容級別 80 → 90(啟用 2005 新特性)
- 其他節點安裝客戶端工具
啟用 AWE(大內存支持,>4GB)
-- 1. OS 層面:boot.ini 加 /PAE 參數(所有節點)
-- 2. 組策略:計算機配置 → Windows 設置 → 安全設置 → 本地策略 → 用戶權利指派
-- 「鎖定內存中的頁」添加 SQL Server 服務賬號
-- 3. SQL 端啟用 AWE
sp_configure 'show advanced options', 1; RECONFIGURE;
sp_configure 'awe enabled', 1; RECONFIGURE;
-- 4. 設置內存範圍(動態管理 AWE 映射內存)
sp_configure 'min server memory', 1024; RECONFIGURE;
sp_configure 'max server memory', 6144; RECONFIGURE;
群集注意:所有實例 max server memory 之和 < 故障轉移節點最小物理內存,否則切換後無法啟動。
高頻升級後錯誤與對策
| 現象 | 原因 | 解決 |
| 升級遠程分發服務器後連不上 | Administrative link password 不匹配 | Management Studio → Replication → Distributor Properties → Publishers → 更新密碼 |
| 服務啟動帳號非預期 | 升級重置 | Configuration Manager 修正為專用域賬號 |
| 兼容級別仍為 80 | 未手動調整 | DB Properties → Options → Compatibility Level → 90 |
| @@SERVERNAME ≠ SERVERPROPERTY('ServerName') | 重命名過機器名 | sp_dropserver @server='old'; sp_addserver @server='new', @local='local'; 重啟服務 |
| Invalid column 'Publisher_Type' | msdb.dbo.MSDistPublishers 缺列 | 手動加列 Publisher_Type,或按上條修正 servername 後重啟 |
| 群集無法新建發布 | sysreplservers.srvname 不一致 | 修改 srvname = @@SERVERNAME,重啟;Snapshot/Distributor Agent Security 選 Windows 賬號 + SQL 登錄 |
| CPU 利用率翻倍 | 2005 對綁定變量要求更高 | IN 列表改用臨時表/表變量,促使參數化 |
核心經驗
- 升級前跑升級顧問、全備份、腳本化一切可腳本化對象
- 群集必須所有節點先裝 .NET 2.0,安裝時服務賬號務必一致
- 升級後第一時間:更新統計、改兼容級別、校驗 servername、重配復制/Log Shipping
- CPU 飆升多因查詢未參數化,優先排查 IN 列表、動態 SQL