sp_add_jobschedule (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

建立 SQL Server Agent 作業的排程。

Transact-SQL 語法慣例

重要

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 = Weekday
10 = 週末日
64 (SQL Server Agent 服務啟動時) @freq_interval未使用。
128 @freq_interval未使用。

[ @freq_subday_type = ] freq_subday_type

指定@freq_subday_interval單位。 @freq_subday_type為 int,而且可以是下列其中一個值:

描述(單位)
0x1 在指定的時間
0x2
0x4 分鐘
0x8 小時

[ @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_factor16328

[ @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 排程附加至作業。

權限

此預存程式是由 db_owner 角色所擁有。 您可以授與 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