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

SQL Server 2005 自動備份實作指南:維護計畫與 Agent 作業兩種方案完整步驟

     編輯:關於SqlServer

方案一:維護計畫(圖形化、適合簡單排程)

  1. 開啟 SSMS → 連線執行個體 → 展開 管理 → 右鍵 維護計畫 → 新增維護計畫。
  2. 工具箱(Ctrl+Alt+X)拖曳 「備份資料庫工作」 至設計面。
  3. 雙擊工作 → 選擇目標資料庫(可多選)、備份類型(完整/差異/記錄)、目的地(磁碟/磁帶)、檔案命名規則(建議含日期時間:DBName_YYYYMMDD_HHMM.bak)。
  4. 點擊「排程」圖示 → 設定頻率(每日/每週/每月)、具體時間、持續期間。
  5. 儲存計畫 → 自動建立對應的 SQL Agent 作業,可在「作業活動監視器」查看執行歷程。

方案二:SQL Agent 作業 + T-SQL 腳本(彈性最高、生產環境推薦)

前置條件

  • SQL Server Agent 服務啟動且設為「自動」。
  • 備份目標資料夾(如 D:\SQLBackup\)SQL Server 服務帳戶具備「寫入」權限。

建立作業步驟

  1. SSMS → SQL Server Agent → 右鍵 作業 → 新增作業。
  2. 一般頁:名稱 Job_Backup_UserDB_Full,擁有者 sa,類別「資料庫維護」。
  3. 步驟頁 → 新增:
    • 步驟名稱:FullBackup
    • 類型:Transact-SQL 指令碼 (T-SQL)
    • 資料庫:master
    • 命令:貼上下列腳本(依實際調整路徑與資料庫名)
DECLARE @BackupPath NVARCHAR(260) = N'D:\SQLBackup\';
DECLARE @DBName     NVARCHAR(128) = N'YourUserDB';
DECLARE @FileName   NVARCHAR(360);
DECLARE @DateStamp  NVARCHAR(20);

SET @DateStamp = REPLACE(CONVERT(VARCHAR(19), GETDATE(), 120), ':', '.');  -- 2024-01-15.14.30.45
SET @FileName  = @BackupPath + @DBName + N'_' + @DateStamp + N'.bak';

BACKUP DATABASE @DBName
TO DISK = @FileName
WITH
    NOINIT,          -- 附加到現有媒體集
    NOFORMAT,        -- 不格式化媒體
    SKIP,            -- 跳過過期/名稱檢查
    STATS = 10,      -- 每 10% 回報進度
    COMPRESSION,     -- 啟用備份壓縮 (SQL 2008 Enterprise+)
    CHECKSUM;        -- 頁面校驗和,提高可靠度
  1. 排程頁 → 新增:頻率「每天」,每日執行一次,時間設為業務低峰(如 02:00)。
  2. 通知頁:可設定完成/失敗時寄送郵件給 DBA(需先設定 Database Mail)。
  3. 確定儲存 → 右鍵作業 → 啟動作業 測試一次,查看歷程記錄確認成功。

進階備份策略建議

策略層級頻率保留期備份類型適用場景
核心 OLTP完整:每日 02:00
記錄:每 15 分鐘
完整 14 天
記錄 7 天
完整 + 記錄RPO < 15 分鐘,RTO < 1 小時
報表/資料倉儲完整:每週日 01:00
差異:每日 03:00
完整 4 週
差異 2 週
完整 + 差異資料變動較緩、可接受較長 RPO
歸檔/唯讀資料庫僅首次完整備份永久完整資料不再變更

自動清除過期備份檔(PowerShell + Agent 作業)

# 另存為 CleanOldBackups.ps1,Agent 作業步驟類型選 PowerShell
$BackupRoot = "D:\SQLBackup"
$RetainDays = 14
Get-ChildItem -Path $BackupRoot -Filter "*.bak" -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$RetainDays) } |
Remove-Item -Force -Verbose

建立對應 Agent 作業,排程於每日備份完成後 30 分鐘執行。

驗證與監控清單

  • 還原演練: 每季至少一次,從備份檔還原至測試伺服器,驗證 DBCC CHECKDB 無錯誤。
  • 備份報表: SSMS 右鍵資料庫 → 報表 → 標準報表 → 備份與還原事件。
  • 警示: Agent 警示 → 作業失敗 → 郵件通知 DBA 群組。
  • 磁碟空間: 監控備份磁碟剩餘 > 20%,不足自動擴充或清理。

常見問題排查

現象原因對策
作業歷程顯示成功但備份檔為 0 KB路徑寫錯/權限不足/磁碟滿檢查服務帳戶權限、磁碟配額、路徑拼寫
BACKUP 指令報錯「無法開啟備份裝置」網路路徑 UNC 路徑需雙反斜線、服務帳戶無網路存取權用本機路徑或建立具網路權限的代理帳戶
差異備份失效「找不到基底完整備份」完整備份被刪/移動/覆寫調整清理腳本保留期 ≥ 最舊差異備份所需基底
記錄備份鏈中斷切換復原模式、執行 TRUNCATE_LOG、資料庫離線立即執行完整備份重建鏈,檢查維護計畫未勾選「截斷記錄」

落實自動備份不只是「跑通作業」,更要建立「備份→驗證→清理→監控→演練」閉環,才能在災難發生時真正救回資料與業務。

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