首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 資料維護實務指南 (1):維護計畫架構與核心任務詳解

     編輯:關於SqlServer

為確保資料庫持續最佳效能、可用性與可恢復性,DBA 必須建立系統化、自動化的維護作業。SQL Server 2005 引入 **維護計畫**,整合 SSIS 引擎,提供圖形化設計介面與豐富內建任務,支援排程、記錄、通知、多伺服器部署。

1. 維護計畫核心價值

  • 自動化:依排程自動執行,消除人工遺漏。
  • 標準化:內建最佳實務任務模板,降低錯誤風險。
  • 可視化:工作流設計師直觀呈現任務依賴與順序。
  • 可擴充:支援自訂 T-SQL、SSIS 套件、OS 命令任務。
  • 集中管理:SP2 新增多伺服器維護計畫,主伺服器統一下發。

2. SP2 關鍵增強 (SQL Server 2005 SP2)

  • **子計畫獨立排程**:單一維護計畫包含多子計畫,各擁有獨立排程 (備份每日、統計更新每週、索引重組每月)。
  • **不再強制依賴 SSIS 服務**:維護計畫引擎整合於 Database Engine,獨立運作。
  • **多伺服器管理**:主伺服器 (MSX) 統一管理目標伺服器 (TSX) 維護計畫與記錄。
  • **清除維護任務回歸**:刪除殘留備份檔/報表檔,支援依副檔名/資料夾/保留時間清理。
  • **備份過期選項回歸**;備份資料夾自訂路徑不重置;修復系統資料庫簡單模式誤建差異/記錄備份 Bug;歷史清除支援小時粒度;更新統計支援完整掃描/樣本選項。

3. 核心維護任務詳解

3.1 檢查資料庫完整性

  • 執行 `DBCC CHECKDB` 驗證系統/使用者資料表分配頁、資料頁、索引頁結構完整性。
  • 選項:包含索引頁檢查、指定資料庫範圍。
  • T-SQL 等價:`DBCC CHECKDB WITH NO_INFOMSGS;`

3.2 收縮資料庫 —— 生產環境慎用

  • 釋放資料/記錄檔未使用空間至 OS 或保留指定百分比可用空間。
  • **副作用**:反向搬移頁面產生大量記錄、索引碎片化、自動成長頻繁觸發效能抖動、檔案碎片化。
  • **建議**:維護計畫**不勾選**此任務;如需收縮,非尖峰時段手動執行並緊接索引重建。
  • T-SQL 範例:`DBCC SHRINKDATABASE (N'AdventureWorks', 15, TRUNCATEONLY);` (保留 15% 可用空間,僅釋放檔案末端空間)。

3.3 重新組織索引 (線上、輕量)

  • `ALTER INDEX ... REORGANIZE`:整理葉層碎片、壓縮 LOB 資料 (選項 `LOB_COMPACTION = ON`),**線上操作、不持有長鎖、可中斷續傳**。
  • 適用:碎片率 10-30%、需零停機維護窗口。
  • T-SQL 範例:
ALTER INDEX [IX_SalesOrderDetail_ProductID] 
ON [Sales].[SalesOrderDetail] 
REORGANIZE WITH (LOB_COMPACTION = ON);

3.4 重新建立索引 (深度、離線/線上)

  • `ALTER INDEX ... REBUILD`:重建整棵 B 樹,**更新統計資料、可調整填充因子**、可線上 (`ONLINE = ON`)、可在 `tempdb` 排序 (`SORT_IN_TEMPDB = ON`)。
  • 適用:碎片率 >30%、需調整填充因子、Schema 變更後。
  • 填充因子 0-100:值越大保留空間越多、分頁分裂越少、索引體積越大。
  • T-SQL 範例 (線上、tempdb 排序、預設填充因子):
ALTER INDEX [PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID] 
ON [Sales].[SalesOrderDetail] 
REBUILD WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
    SORT_IN_TEMPDB = ON, ONLINE = ON);

3.5 更新統計資料

  • `UPDATE STATISTICS` 重新取樣欄位/索引統計資料,確保查詢最佳化器擁有最新分佈資訊。
  • 選項:全部/僅欄位/僅索引;完整掃描 (`FULLSCAN`) 或指定樣本百分比/列數。
  • T-SQL 範例:`UPDATE STATISTICS [Sales].[SalesOrderDetail] WITH FULLSCAN;`

3.6 清除歷程記錄

  • 刪除 `msdb` 中備份/還原歷程、Agent 作業歷程、維護計畫歷程。
  • 保留期限:天/週/月/年可選。
  • T-SQL 等價:`sp_delete_backuphistory`、`sp_purge_jobhistory`、`sp_maintplan_delete_log`。

3.7 執行 SQL Server Agent 作業

  • 將現有 Agent 作業或 SSIS 套件納入維護工作流。
  • T-SQL:`EXEC msdb.dbo.sp_start_job @job_id = '...';`

3.8 備份資料庫 —— 核心任務

  • 支援**完整/差異/記錄**三種備份類型,副檔名慣例 `.bak` / `.trn`。
  • 豐富選項:元件選擇、過期時間、驗證備份、壓縮 (Enterprise)、鏡像備份集、網路共享/磁帶、每資料庫建立子資料夾。
  • 關鍵警示:若已設定 **記錄傳送**,**勿再建立記錄備份任務**,否則產生兩組備份鏈導致還原失敗 (需兩組皆備方能還原至故障點)。

3.9 清除維護任務

  • 刪除維護計畫產生的備份檔 (`.bak`、`.trn`) 與報表檔 (`.txt`)。
  • 支援:指定檔案、資料夾遞迴、副檔名過濾、保留時間 (時/天/週/月/年)。

下集將示範透過精靈與設計師建立完整維護計畫、多伺服器部署、維護行事曆最佳實務。

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