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

使用 T-SQL 腳本建立 SQL Server 2000 排程作業:sp_add_job、sp_add_jobschedule、sp_add_jobstep 完整範例

     編輯:關於SqlServer

為何用腳本建立作業?

  • 企業管理器手動建立繁瑣、難以版本控管、部署時易出錯。
  • 腳本化可納入版本控制、自動化部署、跨環境一致性保證。

前置條件

  1. 啟動 SQLServerAgent 服務(安裝預設未啟動)。
  2. 理解「實例」概念:SQL 2000 預設安裝建立預設實例(實例名為空),命名實例需指定實例名。

三大系統預存程序

  1. sp_add_job:建立作業。
  2. sp_add_jobschedule:建立作業排程。
  3. sp_add_jobstep:建立作業步驟(操作內容)。

順序:作業 → 排程 → 步驟(亦可步驟先建立再關聯)。

範例一:每日 00:30 處理售票資料

USE msdb;
GO

-- 1. 建立作業
EXEC sp_add_job 
    @job_name = 'tk_bakdata',
    @enabled = 1,
    @description = '每日 00:30 處理售票資料',
    @start_step_id = 1,
    @owner_login_name = 'tkuser';
EXEC sp_add_jobserver @job_name = 'tk_bakdata';  -- 關聯至本地伺服器
GO

-- 2. 建立排程:每日一次,00:30 執行
EXEC sp_add_jobschedule 
    @job_name = 'tk_bakdata',
    @name = 'Bakdata003000',
    @freq_type = 4,          -- 4 = Daily
    @freq_interval = 1,      -- 每 1 天
    @active_start_time = 003000;  -- 00:30:00
GO

-- 3. 建立步驟:執行自訂預存程序 tksp_bakdata
EXEC sp_add_jobstep 
    @job_name = 'tk_bakdata',
    @step_name = 'bakdata',
    @subsystem = 'TSQL',
    @command = 'EXEC tksp_bakdata',
    @database_name = 'ticket';
GO

範例二:SQL Server 啟動時執行(適用每日關機伺服器)

USE msdb;
GO
EXEC sp_add_job 
    @job_name = 'tk_bakdata2',
    @enabled = 1,
    @description = 'SQL Server 啟動時處理售票資料',
    @start_step_id = 1,
    @owner_login_name = 'tkuser';
EXEC sp_add_jobserver @job_name = 'tk_bakdata2';
GO

EXEC sp_add_jobschedule 
    @job_name = 'tk_bakdata2',
    @name = 'OnSQLStart',
    @freq_type = 64;  -- 64 = On SQL Server Agent startup
GO

EXEC sp_add_jobstep 
    @job_name = 'tk_bakdata2',
    @step_name = 'bakdata_startup',
    @subsystem = 'TSQL',
    @command = 'EXEC tksp_bakdata',
    @database_name = 'ticket';
GO

常用排程參數對照表

參數說明常用值
@freq_type頻率類型1=Once, 4=Daily, 8=Weekly, 16=Monthly, 32=Monthly Relative, 64=Agent Startup, 128=Idle
@freq_interval間隔單位Daily: 天數; Weekly: 位元組位元 (1=Sun, 2=Mon...); Monthly: 日期
@active_start_time每日開始時間HHMMSS 格式整數,如 003000 = 00:30:00

部署建議

  • 將上述腳本存為 .sql 檔,部署時用 osql 或 sqlcmd 執行。
  • 作業擁有者 (@owner_login_name) 需具備 sysadmin 或 SQLAgentUserRole 權限。
  • 生產環境建議加入錯誤處理步驟、通知操作員(sp_add_notification)、記錄作業歷程。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved