sp_add_job:建立作業。sp_add_jobschedule:建立作業排程。sp_add_jobstep:建立作業步驟(操作內容)。順序:作業 → 排程 → 步驟(亦可步驟先建立再關聯)。
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
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)、記錄作業歷程。