sp_add_schedule (Transact-SQL)
建立可供任意數量的作業使用的排程。
語法
sp_add_schedule [ @schedule_name = ] 'schedule_name'
[ , [ @enabled = ] enabled ]
[ , [ @freq_type = ] freq_type ]
[ , [ @freq_interval = ] freq_interval ]
[ , [ @freq_subday_type = ] freq_subday_type ]
[ , [ @freq_subday_interval = ] freq_subday_interval ]
[ , [ @freq_relative_interval = ] freq_relative_interval ]
[ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @active_start_time = ] active_start_time ]
[ , [ @active_end_time = ] active_end_time ]
[ , [ @owner_login_name = ] 'owner_login_name' ]
[ , [ @schedule_uid = ] schedule_uid OUTPUT ]
[ , [ @schedule_id = ] schedule_id OUTPUT ]
[ , [ @originating_server = ] server_name ] /* internal */
引數
[ @schedule_name = ] 'schedule_name'
排程的名稱。schedule_name 是 sysname,沒有預設值[ @enabled = ] enabled
指出排程目前的狀態。enabled 是 tinyint,預設值是 1 (已啟用)。 如果是 0,就表示未啟用排程。 當未啟用排程時,不會依據這份排程來執行任何作業。[ @freq_type = ] freq_type
指出將執行作業之時間的值。freq_type 是 int,預設值是 0,它可以是下列值之一。值
描述
1
一次
4
每天
8
每週
16
每月
32
每月,相對於 freq_interval
64
在 SQLServerAgent 服務啟動之時執行
128
在電腦閒置之時執行
[ @freq_interval = ] freq_interval
執行作業的天數。freq_interval 是 int,預設值是 1;它會隨著 freq_type 的值而不同。freq_type 的值
freq_interval 的作用
1 (一次)
freq_interval 未使用。
4 (每天)
每隔 freq_interval 天。
8 (每週)
freq_interval 是下列一或多項 (以 OR 邏輯運算子結合):
1 = 星期日
2 = 星期一
4 = 星期二
8 = 星期三
16 = 星期四
32 = 星期五
64 = 星期六
16 (每月)
在當月的第 freq_interval 天。
32 (每月相對)
freq_interval 是下列其中一項:
1 = 星期日
2 = 星期一
3 = 星期二
4 = 星期三
5 = 星期四
6 = 星期五
7 = 星期六
8 = 每週日期
9 = 工作日
10 = 週末
64 (當 SQLServerAgent 服務啟動時)
freq_interval 未使用。
128
freq_interval 未使用。
[ @freq_subday_type = ] freq_subday_type
指定 freq_subday_interval 的單位。freq_subday_type 是 int,預設值是 0,而且可以是下列其中一個值。值
描述 (單位)
0x1
在指定的時間
0x2
秒
0x4
分鐘
0x8
小時
[ @freq_subday_interval = ] freq_subday_interval
在各次執行作業之間發生的 freq_subday_type 週期數。freq_subday_interval是 int,預設值是 0。當 freq_subday_type 等於 1 時,會忽略 freq_subday_interval。 附註:間隔長度不應大於 10 秒。[ @freq_relative_interval = ] freq_relative_interval
如果 freq_interval 是 32 (每月相對),便會在每月的 freq_interval 發生作業。freq_relative_interval 是 int,預設值是 0,它可以是下列值之一。當 freq_type 不等於 32 時,便會忽略 freq_relative_interval。值
描述 (單位)
1
第一個
2
第二個
4
第三個
8
第四個
16
最後一個
[ @freq_recurrence_factor = ] freq_recurrence_factor
作業的各排程執行之間的週數或月數。如果 freq_type 是 8、16 或 32,則使用 freq_recurrence_factor。freq_recurrence_factor 是 int,預設值是 0。[ @active_start_date = ] active_start_date
可以開始執行作業的日期。active_start_date 是 int,預設值是 NULL,表示今天的日期。 日期格式為 YYYYMMDD。 如果 active_start_date 不是 NULL,這個日期就必須大於或等於 19900101。建立排程之後,檢閱開始日期,並確認該日期正確。 如需詳細資訊,請參閱<建立和附加排程至作業>中的「排程開始日期」一節。
[ @active_end_date = ] active_end_date
可以停止執行作業的日期。active_end_date是 int,預設值是 99991231,表示 9999 年 12 月 31 日。 格式為 YYYYMMDD。[ @active_start_time = ] active_start_time
在 active_start_date 和 active_end_date 之間的任何一天,開始執行作業的時間。active_start_time 是 int,預設值是 000000,表示 24 小時制的上午 12:00:00,必須用 HHMMSS 格式來輸入。[ @active_end_time = ] active_end_time
在 active_start_date 和 active_end_date 之間的任何一天,結束執行作業的時間。active_end_time 是 int,預設值是 235959,表示 24 小時制的下午 11:59:59,必須用 HHMMSS 格式來輸入。[ @owner_login_name= ] 'owner_login_name'
擁有排程之伺服器主體的名稱。owner_login_name 是 sysname,預設值是 NULL,表示排程是建立者所擁有。[ @schedule_uid= ] schedule_uidOUTPUT
排程的唯一識別碼。schedule_uid 是 uniqueidentifier 類型的變數。[ @schedule_id= ] schedule_idOUTPUT
排程的識別碼。schedule_id 是 int 類型的變數。[ @originating_server= ] server_name
僅供參考之用。不支援。我們無法保證未來的相容性。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
無
備註
SQL Server Management Studio 提供了一種簡單的圖形方式供您管理各項作業,建議您利用這個方式來建立和管理作業基礎結構。
權限
依預設,只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠執行這個預存程序。 其他使用者必須被授與 msdb 資料庫的下列其中一個 SQL Server Agent 固定資料庫角色。
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
如需有關這些角色權限的詳細資料,請參閱<SQL Server Agent 固定資料庫角色>。
範例
A. 建立排程
下列範例會建立一份名稱為 RunOnce 的排程。 這份排程會在建立排程當日的 23:30 執行一次。
USE msdb ;
GO
EXEC dbo.sp_add_schedule
@schedule_name = N'RunOnce',
@freq_type = 1,
@active_start_time = 233000 ;
GO
B. 建立一份排程,將排程附加至多項作業
下列範例會建立一份名稱為 NightlyJobs 的排程。 每天伺服器時間到了 01:00 時,就會開始執行使用這份排程的作業。 這個範例會將排程附加至 BackupDatabase 作業和 RunReports 作業上。
[!附註]
這個範例假設 BackupDatabase 作業和 RunReports 作業都已經存在。
USE msdb ;
GO
EXEC sp_add_schedule
@schedule_name = N'NightlyJobs' ,
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 010000 ;
GO
EXEC sp_attach_schedule
@job_name = N'BackupDatabase',
@schedule_name = N'NightlyJobs' ;
GO
EXEC sp_attach_schedule
@job_name = N'RunReports',
@schedule_name = N'NightlyJobs' ;
GO
請參閱