透過 SQL Server Agent 作業排程可實現無人值守的資料庫自動備份。本文提供完整建立步驟、動態日期檔名腳本、壓縮/驗證選項與啟用服務檢查,確保備份可靠可追蹤。
sa(或具備 sysadmin 的帳號)。Transact-SQL 指令碼,資料庫 master,命令貼上下方動態腳本。DECLARE @FileName NVARCHAR(260);
SET @FileName = N'E:\Backup\DB_Backup_'
+ REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''), ' ', ''), ':', '')
+ N'.bak';
PRINT @FileName; -- 除錯用,可註解
BACKUP DATABASE [YourDB]
TO DISK = @FileName
WITH
INIT, -- 覆寫同名檔案(配合唯一檔名實際不會重複)
NOFORMAT,
NOINIT,
NAME = N'YourDB_Full_Backup',
SKIP,
NOREWIND,
NOUNLOAD,
COMPRESSION, -- SQL 2008+ 支援備份壓縮,節省 60-80% 空間
CHECKSUM, -- 啟用頁面檢查碼驗證
STATS = 10; -- 每 10% 顯示進度
| 選項 | 用途 |
|---|---|
| INIT | 覆寫現有備份集,配合唯一檔名避免單一檔案膨脹 |
| COMPRESSION | 備份壓縮(Enterprise/Standard 2008R2+),大幅減少 I/O 與儲存 |
| CHECKSUM | 驗證每頁檢查碼,偵測媒體損毀 |
| STATS = 10 | 記錄進度至錯誤記錄檔與作業歷程,利於監控 |
SSMS → 「管理」→ 「維護計畫」→ 「維護計畫精靈」,視覺化設定備份、清除舊檔、完整性檢查、索引重組,自動產生 SSIS 封裝並部署至 Agent 作業,適合偏好 GUI 的 DBA。
RESTORE VERIFYONLY
FROM DISK = @FileName
WITH CHECKSUM, STATS = 10;
若驗證失敗,作業會標示失敗並發送警示(需設定作業通知)。
-- 保留最近 7 天
EXEC xp_cmdshell 'forfiles /p "E:\Backup" /m "DB_Backup_*.bak" /d -7 /c "cmd /c del @path"';
⚠️ 需啟用 xp_cmdshell 且服務帳號具備資料夾刪除權限。生產環境建議改用 Agent 代理商 Proxy 執行 PowerShell 腳本更安全。