建議:重寫 DTS/舊包而非就地升級。 2005/2008 引擎相似,但 2000→2005/2008 引擎差異大,就地升級雖能跑但性能不達標。SSIS 替代 DTS,性能提升顯著(業界記錄 20+ 分鐘/GB)。
鏡像發送的是實際事務日志記錄,而非重建命令。索引重建產生大量日志,主庫日志文件暴漲。本質上鏡像 = 實時日志傳送,差別僅在發送方式(連續流 vs 批次備份)。日志傳送與鏡像傳輸量幾乎相同。
對策: 維護窗口重建、分批重建、SORT_IN_TEMPDB = ON 減少主庫日志、簡單恢復模式下重建(但斷開日志鏈,需事後全備)。
非簡單升級費,需購買 2008 新授權。但 SQL Server 性價比高:較低價位 + Windows 生態集成優勢,彌補極致性能差距。
Vista 是客戶端 OS,不建議裝數據庫引擎。若必須:2000 僅支持企業/標準/桌面版;2005/2008 提供 Express 版,功能/語法一致,僅受限於資源配額(CPU/內存/庫大小)。生產環境應部署在 Server OS(2008 R2/2012/2016/2019/2022)。
無統一清單,核心原則:避免過長複雜語句,模組化、參數化、利用新語法(CTE、MERGE、窗口函數、TRY_CATCH、TVP)替換舊邏輯。新特性組合才能發揮引擎優化潛力。
利用 DMV 監控索引使用:
-- 捕獲索引使用快照
SELECT
OBJECT_NAME(s.object_id) AS TableName,
i.name AS IndexName,
s.user_seeks, s.user_scans, s.user_lookups,
s.user_updates, -- 維護開銷
s.last_user_seek, s.last_user_scan
FROM sys.dm_db_index_usage_stats s
JOIN sys.indexes i ON i.object_id = s.object_id AND i.index_id = s.index_id
WHERE s.database_id = DB_ID()
AND OBJECTPROPERTY(s.object_id, 'IsUserTable') = 1
ORDER BY s.user_updates DESC; -- 寫多讀少優先評估
策略: 定期(周/月)拍攝快照對比,長期 user_seeks+scans+lookups = 0 且 user_updates > 0 的非聚集索引 → 評估業務影響後刪除。聚集索引不可刪(除非改堆)。
DBCC CHECKDB 確保源庫無損壞。EXEC sp_updatestats。100 (2008) → 110 (2012) → ...,觀察計劃變化。