sp_update_schedule (Transact-SQL)
適用於:SQL Server
變更 SQL Server Agent 排程的設定。
語法
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 = Weekday10 = 週末日 |
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_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小時制。
[ @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