[SQL]透過T-SQL指令的方式,建立工作排程

  • 2432
  • 0

[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