SQL Server 2005 的維護計劃精靈 是一項強大的自動化功能,可協助資料庫管理員 (DBA) 設定核心維護任務,確保資料庫持續以最佳效能運作。透過建立一或多個 SQL Server Agent 作業,維護計劃能依排程自動執行備份、完整性檢查、索引最佳化、統計資料更新等工作,大幅減輕人工管理負擔,並降低人為疏失風險。
執行 DBCC CHECKDB 檢查指定資料庫中所有物件的配置與結構完整性,可選擇是否包含索引頁面檢查。語法範例:
DBCC CHECKDB WITH NO_INFOMSGS
使用 DBCC SHRINKDATABASE 縮減資料庫檔案大小。可設定觸發臨界值 (MB) 及收縮後保留的可用空間百分比。兩種模式:
DBCC SHRINKDATABASE (N'DBName', 10, NOTRUNCATE)DBCC SHRINKDATABASE (N'DBName', 10, TRUNCATEONLY)對索引進行邏輯重排,適合碎片率較低 (通常 < 30%) 的情況。可選擇壓縮大型物件 (LOB) 資料。語法:
ALTER INDEX [PK_Employee_EmployeeID] ON [HumanResources].[Employee]
REORGANIZE WITH (LOB_COMPACTION = ON)
完整重建索引,適用於高碎片率 (> 30%) 場景。支援設定填充因子、排序於 tempdb、線上索引等選項。語法:
ALTER INDEX [PK_Employee_EmployeeID] ON [HumanResources].[Employee]
REBUILD WITH (FILLFACTOR = 90, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF)
強制更新查詢優化器所需的資料分佈統計資訊,可指定全掃描或抽樣。語法:
UPDATE STATISTICS [HumanResources].[Employee] WITH FULLSCAN
刪除 msdb 中舊的備份/還原歷程、Agent 作業歷程、維護計劃記錄。呼叫系統預存程序:
DECLARE @dt DATETIME = '2007-05-31T08:00:00';
EXEC msdb.dbo.sp_delete_backuphistory @dt;
EXEC msdb.dbo.sp_purge_jobhistory @oldest_date = @dt;
EXECUTE msdb..sp_maintplan_delete_log NULL, NULL, @dt;
支援完整、差異、記錄備份,可設定保留期限建立備份歷程鏈,支援時間點還原。
擴充維護計劃功能,可串接自訂腳本、發送警示通知。
碎片率判斷依據:使用 sys.dm_db_index_physical_stats 檢測。碎片率 < 30% 用重新組織;> 30% 用重新建立。
某企業環境:數個資料庫總計約 200 GB,維護計劃每週凌晨執行一次,耗時 2+ 小時。重新建立索引期間資料表會被鎖定無法存取,若業務允許可考慮 ONLINE = ON 選項 (Enterprise 版支援) 或採用分區策略降低影響。持續優化中…