SQL Server 2005 SP2 將維護計劃深度整合至資料庫引擎,無需安裝 SSIS 即可使用,並引入多子計劃、遠程管理、清理任務回歸、備份過期選項等企業級特性。本文系統梳理維護計劃架構、九大核心任務、關鍵任務 T-SQL 實現與避坑指南。
| 任務 | 核心目的 | 關鍵 T-SQL / 參數 |
|---|---|---|
| 檢查數據庫完整性 | 偵測頁損壞、鏈接錯誤、系統表異常 | DBCC CHECKDB WITH NO_INFOMSGS |
| 更新統計信息 | 優化器擁有最新分布,生成優質計劃 | UPDATE STATISTICS ... WITH FULLSCAN / SAMPLE n PERCENT |
| 重新組織索引 | 整理葉級碎片,壓縮 LOB,在線操作 | ALTER INDEX ... REORGANIZE WITH (LOB_COMPACTION = ON) |
| 重新生成索引 | 完全重建索引樹,調整填充因子,可選 ONLINE/SORT_IN_TEMPDB | ALTER INDEX ... REBUILD WITH (FILLFACTOR=80, ONLINE=ON, SORT_IN_TEMPDB=ON) |
| 數據庫備份 | 完整/差異/日志備份,支持壓縮、加密、過期日期、鏡像備份集 | BACKUP DATABASE ... TO DISK=... WITH COMPRESSION, CHECKSUM |
| 清理歷史記錄 | 清除 msdb 備份/還原/作業/維護計劃歷史,防膨脹 | sp_delete_backuphistory @oldest_date / 維護計劃任務 GUI |
| 收縮數據庫 | 釋放未用空間 (謹慎使用,見下文) | DBCC SHRINKDATABASE (N'DB', 15, TRUNCATEONLY) |
| 清除維護任務文件 | 刪除備份文件、報表文件等物理殘留 | 維護清理任務:搜尋目錄、副檔名、保留天數/小時 |
| 執行 SQL Server 作業 | 調度自定義 T-SQL/SSIS/CmdExec 作業 | Agent 作業 ID/名稱 |
三大副作用:
建議:僅在一次性大量歸檔/刪除後、非高峰窗口、人工評估後執行。日常維護勾選「重新組織/重新生成索引」替代。
| 選項 | 適用場景 | 代價 |
|---|---|---|
ONLINE = ON | 7×24 業務不可停、表 > 1GB | 臨時映射索引佔用額外空間、CPU 略增、不支持 LOB 列 (2012+ 支持) |
SORT_IN_TEMPDB = ON | tempdb 在獨立高速存儲、主庫 I/O 瓶頸 | tempdb 空間佔用、跨數據庫 I/O |
FILLFACTOR = 80-90 | 高插入/更新表、頁分裂頻繁 | 索引體積增大 10-25%、掃描讀取頁數增加 |
MAXDOP = N | 控制並行度,避免佔滿 CPU 影響業務 | 重建耗時延長 |
FULLSCAN:表 < 100萬行、關鍵大表、統計信息嚴重過期。SAMPLE 20 PERCENT:大表常規維護,平衡開銷與精度。AUTO_CREATE_STATISTICS / AUTO_UPDATE_STATISTICS ON:必須開啟,讓引擎自動維護欄位級統計。WITH CHECKSUM + 定期 RESTORE VERIFYONLY 作業,確保備份可用。維護計劃是 DBA 自動化日常運維的基石。SP2 版本解決了早期「依賴 SSIS、單排程、無遠程管理」痛點,配合上述任務級調優策略,可構建穩健、可審計、可擴展的數據庫維護體系。