[SQL]透過T-SQL指令的方式,建立工作排程
日前因為部份系統需執行自動排程的關係,但是又不允許透過SQL Management Studio進行設定
所以花了一點時間找了一下如何透過T-SQL的方式進行排程工作的方式
建立SQL工作排程的功能,主要必須使用到四個msdb資料庫裡的預存程序
1.msdb.dbo.sp_add_job : 建立主要工作排程內容
2.msdb.dbo.sp_add_jobserver : 設定執行排程的伺服器
3.msdb.sp_add_jobstep : 設定執行排程的步驟
4.msdb.dbo.sp_add_jobschedule : 設定排程的執行時間
執行時所需要的參數可以參考附上超連結的幾個頁面
以我自己要設定排程的內容來說,我需要執行排程的條件如下:
1.早上1:00執行
2.執行sp_SendTodoAlert這一個預存程序
3.2014/3/30 開始執行這一個排程
最後得到的執行語法如下面的內容
USE msdb
EXEC dbo.sp_add_job
@job_name = N'每日通知',
@enabled = 1,
@description = N'每日早上1:00的排程通知',
@owner_login_name = N'sa';
EXEC dbo.sp_add_jobserver
@job_name = N'每日通知';
EXEC sp_add_jobstep
@job_name = N'每日通知',
@step_name = N'每日作業執行',
@command = N'exec sp_SendTodoAlert';
EXEC dbo.sp_add_jobschedule
@job_name = N'每日通知',
@name = N'每日作業',
@freq_type = 4,
@freq_interval = 1,
@freq_subday_type = 1,
@active_start_date = 20140330,
@active_start_time = 10000;
其中只要@job_name這個參數一樣,執行新增排程的預存程序就會自動作關聯
但是實際寫入到資料庫之中的內容,是由GUID作PK與FK的關聯的
有興趣的人可以看看下列四個資料表所呈現的內容
Select * from msdb.dbo.sysjobs
Select * from msdb.dbo.sysjobschedules
Select * from msdb.dbo.sysjobservers
Select * from msdb.dbo.sysjobsteps