首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 2005 資料庫維護計劃完整指南

     編輯:MySQL 資料庫相關知識

什麼是資料庫維護計劃?

SQL Server 2005 的維護計劃精靈 是一項強大的自動化功能,可協助資料庫管理員 (DBA) 設定核心維護任務,確保資料庫持續以最佳效能運作。透過建立一或多個 SQL Server Agent 作業,維護計劃能依排程自動執行備份、完整性檢查、索引最佳化、統計資料更新等工作,大幅減輕人工管理負擔,並降低人為疏失風險。

核心維護任務一覽

1. 檢查資料庫完整性

執行 DBCC CHECKDB 檢查指定資料庫中所有物件的配置與結構完整性,可選擇是否包含索引頁面檢查。語法範例:

DBCC CHECKDB WITH NO_INFOMSGS

2. 收縮資料庫

使用 DBCC SHRINKDATABASE 縮減資料庫檔案大小。可設定觸發臨界值 (MB) 及收縮後保留的可用空間百分比。兩種模式:

  • 保留釋放空間於資料庫檔案:DBCC SHRINKDATABASE (N'DBName', 10, NOTRUNCATE)
  • 歸還釋放空間給作業系統:DBCC SHRINKDATABASE (N'DBName', 10, TRUNCATEONLY)

3. 重新組織索引

對索引進行邏輯重排,適合碎片率較低 (通常 < 30%) 的情況。可選擇壓縮大型物件 (LOB) 資料。語法:

ALTER INDEX [PK_Employee_EmployeeID] ON [HumanResources].[Employee] 
REORGANIZE WITH (LOB_COMPACTION = ON)

4. 重新建立索引

完整重建索引,適用於高碎片率 (> 30%) 場景。支援設定填充因子、排序於 tempdb、線上索引等選項。語法:

ALTER INDEX [PK_Employee_EmployeeID] ON [HumanResources].[Employee] 
REBUILD WITH (FILLFACTOR = 90, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF)

5. 更新統計資料

強制更新查詢優化器所需的資料分佈統計資訊,可指定全掃描或抽樣。語法:

UPDATE STATISTICS [HumanResources].[Employee] WITH FULLSCAN

6. 清除歷程記錄

刪除 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;

7. 備份資料庫與交易記錄

支援完整、差異、記錄備份,可設定保留期限建立備份歷程鏈,支援時間點還原。

8. 執行 SQL Server Agent 作業 / T-SQL 陳述式 / 通知操作員

擴充維護計劃功能,可串接自訂腳本、發送警示通知。

建議執行順序與最佳實務

  1. 檢查資料庫完整性 — 先確保資料結構無損壞
  2. 收縮資料庫 — 釋放未使用空間 (謹慎使用,避免頻繁收縮造成碎片)
  3. 重新建立/重新組織索引 — 依碎片率二擇一,勿同時執行
  4. 更新統計資料 — 確保查詢計畫最新

碎片率判斷依據:使用 sys.dm_db_index_physical_stats 檢測。碎片率 < 30% 用重新組織;> 30% 用重新建立。

實務經驗分享

某企業環境:數個資料庫總計約 200 GB,維護計劃每週凌晨執行一次,耗時 2+ 小時。重新建立索引期間資料表會被鎖定無法存取,若業務允許可考慮 ONLINE = ON 選項 (Enterprise 版支援) 或採用分區策略降低影響。持續優化中…

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved