sp_update_schedule (Transact-SQL)
适用范围:SQL Server
更改SQL Server 代理计划的设置。
语法
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,可以是以下值之一。
值 | 说明 |
---|---|
1 |
一次 |
4 |
每日 |
8 |
每周 |
16 |
每月 |
32 |
相对于 @freq_interval的每月 |
64 |
SQL Server 代理服务启动时运行 |
128 |
计算机空闲时运行 |
[ @freq_interval = ] freq_interval
作业执行的天数。 @freq_interval为 int,默认值0
为 int,取决于@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 (SQL Server 代理服务启动时) |
@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 |
第一个 |
2 |
第二个 |
4 |
第三个 |
8 |
第四 |
16 |
Last |
@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设置为8
或16
@freq_recurrence_factor32
时,才使用@freq_recurrence_factor。
[ @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
(失败)。
注解
所有使用该计划的作业将立即使用新设置。 但是,更改计划不会停止当前正在运行的作业。
权限
可以授予 EXECUTE
此过程的权限,但在 SQL Server 升级期间可能会重写这些权限。
其他用户必须被授予数据库中以下SQL Server 代理固定数据库角色msdb
之一:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色。
只有 sysadmin 的成员才能修改其他用户拥有的计划。
示例
下面的示例将 NightlyJobs
计划的启用状态更改为 0
,并将所有者设置为 terrid
。
USE msdb;
GO
EXEC dbo.sp_update_schedule
@name = 'NightlyJobs',
@enabled = 0,
@owner_login_name = 'terrid';
GO