sp_update_schedule (Transact-SQL)

適用於:SQL Server

變更 SQL Server Agent 排程的設定。

Transact-SQL 語法慣例

語法

sp_update_schedule
    [ [ @schedule_id = ] schedule_id ]
    [ , [ @name = ] N'name' ]
    [ , [ @new_name = ] N'new_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 = ] N'owner_login_name' ]
    [ , [ @automatic_post = ] automatic_post ]
[ ; ]

引數

[ @schedule_id = ] schedule_id

要修改之排程的標識碼。 @schedule_id為 int,預設值為 NULL

必須指定@schedule_id@name

[ @name = ] N'name'

要修改之排程的名稱。 @name為 sysname,預設值為 NULL

必須指定@schedule_id@name

[ @new_name = ] N'new_name'

排程的新名稱。 @new_name為 sysname,預設值為 NULL。 當@new_name為 NULL 時,排程的名稱會保持不變。

[ @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小時制。

[ @owner_login_name = ] N'owner_login_name'

擁有排程的伺服器主體名稱。 @owner_login_name是 sysname,預設值NULL為 ,表示排程是由建立者所擁有。

[ @automatic_post = ] automatic_post

僅供參考之用。 不支援。 我們無法保證未來的相容性。

傳回碼值

0 (成功)或 1 (失敗)。

備註

所有使用排程的作業都會立即使用新的設定。 不過,變更排程並不會停止目前正在執行的工作。

權限

此預存程式是由 db_owner 角色所擁有。 您可以授與 EXECUTE 任何用戶的許可權,但這些許可權可能會在 SQL Server 升級期間覆寫。

其他用戶必須在資料庫中獲得下列其中一個 SQL Server Agent 固定資料庫角色 msdb

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

如需這些角色權限的詳細資訊,請參閱 SQL Server Agent 固定資料庫角色

只有系統管理員的成員可以修改其他用戶所擁有的排程。

範例

下列範例會將排程的 NightlyJobs 啟用狀態變更為 0 ,並將擁有者設定為 terrid

USE msdb;
GO

EXEC dbo.sp_update_schedule
    @name = 'NightlyJobs',
    @enabled = 0,
    @owner_login_name = 'terrid';
GO