sp_add_jobschedule (Transact-SQL)
適用於:SQL Server Azure SQL 受控執行個體
建立 SQL Server Agent 作業的排程。
重要
Azure SQL 受控執行個體目前支援多數 (但非全部) 的 SQL Server Agent 功能。 如需詳細資料,請參閱 Azure SQL 受控執行個體與 SQL Server 之間的 T-SQL 差異。
語法
sp_add_jobschedule
[ [ @job_id = ] 'job_id' ]
[ , [ @job_name = ] N'job_name' ]
, [ @name = ] N'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 ]
[ , [ @schedule_id = ] schedule_id OUTPUT ]
[ , [ @automatic_post = ] automatic_post ]
[ , [ @schedule_uid = ] 'schedule_uid' OUTPUT ]
[ ; ]
引數
[ @job_id = ] 'job_id'
加入排程之作業的作業標識碼。 @job_id為 uniqueidentifier,預設值為 NULL
。
必須指定@job_id或@job_name,但無法指定兩者。
[ @job_name = ] N'job_name'
加入排程的作業名稱。 @job_name為 sysname,預設值為 NULL
。
必須指定@job_id或@job_name,但無法指定兩者。
[ @name = ] N'name'
排程的名稱。 @name為 sysname,沒有預設值。
[ @enabled = ] enabled
指出排程的目前狀態。 @enabled為 tinyint,預設值1
為 (已啟用)。 如果 0
為 ,則不會啟用排程。 停用排程時,不會執行作業。
[ @freq_type = ] freq_type
值,指出作業何時要執行。 @freq_type為 int,而且可以是下列其中一個值:
值 | Description |
---|---|
1 |
一次 |
4 |
每日 |
8 |
每週 |
16 |
每月 |
32 |
每月,相對於 @freq_interval。 |
64 |
當 SQL Server Agent 服務啟動時執行。 |
128 |
在電腦閑置時執行。 |
[ @freq_interval = ] freq_interval
執行作業的日期。 @freq_interval為 int,預設值0
為 ,且取決於下表所示的 @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 = Weekday10 = 週末日 |
64 (SQL Server Agent 服務啟動時) |
@freq_interval未使用。 |
128 |
@freq_interval未使用。 |
[ @freq_subday_type = ] freq_subday_type
指定@freq_subday_interval的單位。 @freq_subday_type為 int,而且可以是下列其中一個值:
值 | 描述(單位) |
---|---|
1 |
在指定的時間 |
2 |
秒 |
4 |
分鐘 |
8 |
小時 |
[ @freq_subday_interval = ] freq_subday_interval
每個作業執行之間要發生的@freq_subday_type期間數。 @freq_subday_interval為 int,預設值為 0
。
[ @freq_relative_interval = ] freq_relative_interval
進一步定義當@freq_type設定為 32
(每月相對) 時@freq_interval。
@freq_relative_interval為 int,而且可以是下列其中一個值:
值 | 描述(單位) |
---|---|
1 |
First |
2 |
Second |
4 |
Third |
8 |
第四個 |
16 |
最後一個 |
@freq_relative_interval表示間隔的發生。 例如,如果@freq_relative_interval設定為 2
,@freq_type會設定為 32
,且 @freq_interval 設定為 3
,則排程的工作會在每個月的第二個星期二發生。
[ @freq_recurrence_factor = ] freq_recurrence_factor
排程執行作業之間的周數或月數。 @freq_recurrence_factor為 int,預設值為 0
。 只有當@freq_type設定為 、 或 時,才會使用@freq_recurrence_factor。16
32
8
[ @active_start_date = ] active_start_date
作業執行可以開始的日期。 @active_start_date為 int,預設值為 NULL
。 日期格式為 yyyyMMdd
。 如果 設定@active_start_date ,日期必須大於或等於 19900101
。
建立排程之後,請檢閱開始日期,並確認其為正確的日期。 如需詳細資訊,請參閱建立和附加排程至作業中的一節。
[ @active_end_date = ] active_end_date
作業執行可以停止的日期。 @active_end_date為 int,預設值為 99991231
。 日期格式為 yyyyMMdd
。
[ @active_start_time = ] active_start_time
@active_start_date與開始作業執行之@active_end_date之間的任何一天時間。 @active_start_time為 int,預設值為 000000
。 時間會格式化為 HHmmss
24小時制。
[ @active_end_time = ] active_end_time
active_start_date與結束作業執行@active_end_date之間的任何一天時間。 @active_end_time 為 int,預設值為 235959
。 時間會格式化為 HHmmss
24小時制。
[ @schedule_id = ] schedule_id OUTPUT
成功建立排程時,指派給排程的標識符。 @schedule_id是int類型的OUTPUT參數。
[ @automatic_post = ] automatic_post
僅供參考之用。 不支援。 我們無法保證未來的相容性。
[ @schedule_uid = ] 'schedule_uid' OUTPUT
排程的唯一標識碼。 @schedule_uid是 uniqueidentifier 類型的 OUTPUT 參數。
傳回碼值
0
(成功) 或 1
(失敗)。
結果集
無。
備註
作業排程現在可以獨立於作業進行管理。 若要將排程新增至作業,請使用 sp_add_schedule
來建立排程,並將 sp_attach_schedule
排程附加至作業。
權限
您可以授與此 EXECUTE
程序的許可權,但這些許可權可能會在 SQL Server 升級期間覆寫。
其他用戶必須在資料庫中獲得下列其中一個 SQL Server Agent 固定資料庫角色 msdb
:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
如需這些角色權限的詳細資訊,請參閱 SQL Server Agent 固定資料庫角色。
範例
下列範例會將作業排程指派給 SaturdayReports
,其會在上午 2:00 執行每個星期六。
EXEC msdb.dbo.sp_add_jobschedule
@job_name = N'SaturdayReports', -- Job name
@name = N'Weekly_Sat_2AM', -- Schedule name
@freq_type = 8, -- Weekly
@freq_interval = 64, -- Saturday
@freq_recurrence_factor = 1, -- every week
@active_start_time = 20000 -- 2:00 AM