SQL Server Agent 內建排程引擎可實現資料庫層級的定時任務 (備份、維護、ETL 等),無需外部排程器。本文說明從服務啟動到建立作業的完整流程。
⚠ Express 版本不包含 SQL Server Agent,需升級至 Standard/Enterprise 或使用 Windows 排程器 + sqlcmd 替代。
DailyBackupEXEC usp_DailyBackupUSE msdb; GO EXEC dbo.sp_add_job @job_name = N'DailyBackup', @enabled = 1, @description = N'每日全備份排程'; GO EXEC dbo.sp_add_jobstep @job_name = N'DailyBackup', @step_name = N'ExecuteBackupProc', @subsystem = N'TSQL', @command = N'EXEC dbo.usp_FullBackup;', @database_name = N'MyDB', @retry_attempts = 3, @retry_interval = 5; GO EXEC dbo.sp_add_schedule @schedule_name = N'Daily_0200', @freq_type = 4, -- 每日 @active_start_time = 020000; -- 02:00 GO EXEC dbo.sp_attach_schedule @job_name = N'DailyBackup', @schedule_name = N'Daily_0200'; GO EXEC dbo.sp_add_jobserver @job_name = N'DailyBackup'; GO
| 現象 | 原因 | 解決 |
|---|---|---|
| 作業不執行 | Agent 服務未啟動/排程未啟用 | 啟用服務、檢查作業/排程 enabled=1 |
| 權限失敗 | 作業擁有者無目標資料庫權限 | 指定具備權限的登入為擁有者、或步驟使用 Proxy 帳戶 |
| 輸出截斷 | 步驟輸出預設 1024 字元 | 步驟進階設定 輸出檔案 完整記錄 |
| 時區錯誤 | 伺服器時區與預期不符 | 確認 OS 時區、SQL Server 時區設定一致 |
EXEC usp_xxx,利於版控與測試msdb.dbo.sysjobhistory 執行歷程,建立監控儀表板MAXDOP 限制平行度