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

SQL Server 2005 Agent 排程執行 SQL 指令完整設定教學

     編輯:SQL Server 2005

SQL Server Agent 內建排程引擎可實現資料庫層級的定時任務 (備份、維護、ETL 等),無需外部排程器。本文說明從服務啟動到建立作業的完整流程。

前置條件:啟用 SQL Server Agent 服務

  1. 控制台 → 管理工具 → 服務
  2. 找到 SQL Server Agent (MSSQLSERVER) 或具名執行個體
  3. 右鍵 屬性 → 啟動類型改為 自動 → 啟動
⚠ Express 版本不包含 SQL Server Agent,需升級至 Standard/Enterprise 或使用 Windows 排程器 + sqlcmd 替代。

建立排程作業 (SSMS 圖形化)

  1. SSMS 物件總管展開 SQL Server Agent → 作業
  2. 右鍵 新增作業
  3. 一般頁籤:輸入作業名稱、擁有者、類別、描述
  4. 步驟頁籤 → 新增:
    • 步驟名稱:如 DailyBackup
    • 類型:Transact-SQL 指令碼 (T-SQL)
    • 資料庫:選擇目標資料庫
    • 命令:輸入 T-SQL 陳述式或呼叫預存程序 EXEC usp_DailyBackup
    • 進階:可設定成功/失敗動作、重試次數/間隔、輸出檔案
  5. 排程頁籤 → 新增:
    • 排程類型:週期性 (每日/每週/每月)、啟動 CPU 閒置時、一次性
    • 頻率:具體時間、間隔、持續期間
    • 確定儲存
  6. 警示/通知 (選填):失敗時寄信、寫入事件記錄、執行另一作業
  7. 確定完成建立

T-SQL 腳本化建立 (適合部署自動化)

USE 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,利於版控與測試
  • 重要作業啟用 失敗通知 (Database Mail) 與 輸出記錄檔
  • 定期檢視 msdb.dbo.sysjobhistory 執行歷程,建立監控儀表板
  • 大量資料維護作業 (索引重建、統計更新) 排在業務低峰期,並設定 MAXDOP 限制平行度
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved