更新日期: 2008 年 11 月 17 日
创建一个可由任意数量的作业使用的计划。
语法
sp_add_schedule [ @schedule_name = ] 'schedule_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 = ] 'owner_login_name' ]
    [ , [ @schedule_uid = ] schedule_uid OUTPUT ]
    [ , [ @schedule_id = ] schedule_id OUTPUT ]
    [ , [ @originating_server = ] server_name ] /* internal */
参数
- [ @schedule_name = ] 'schedule_name'
 计划的名称。schedule_name 的数据类型为 sysname,无默认值。
- [ @enabled = ] enabled
 指示计划的当前状态。enabled 的数据类型为 tinyint,默认值为 1(启用)。如果为 0,则不启用计划。如果不启用计划,则作业不会按此计划运行。
- [ @freq_type = ] freq_type 
 指示作业执行时间的值。freq_type 的数据类型为 int,默认值为 0,可以是下列值之一。- 值 - 说明 - 1 - 一次 - 4 - 每天 - 8 - 每周 - 16 - 每月 - 32 - 每月,相对于 freq_interval - 64 - SQLServerAgent 服务启动时运行 - 128 - 计算机空闲时运行 
- [ @freq_interval = ] freq_interval 
 作业执行的天数。freq_interval 的数据类型为 int,默认值为 1,该值依赖于 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(SQLServerAgent 服务启动时) - freq_interval 未使用。 - 128 - freq_interval 未使用。 
- [ @freq_subday_type = ] freq_subday_type 
 指定 freq_subday_interval 的单位。freq_subday_type为 int,默认值为 0,可以为下列值之一。- 值 - 说明(单位) - 0x1 - 在指定的时间 - 0x4 - 分钟 - 0x8 - 小时 
- [ @freq_subday_interval = ] freq_subday_interval
 作业的每次执行之间间隔的 freq_subday_type 周期数。freq_subday_interval 的数据类型为 int,默认值为 0。在 freq_subday_type 等于 1 的情况下将忽略 freq_subday_interval。
- [ @freq_relative_interval = ] freq_relative_interval 
 如果 freq_interval 为 32(与“每月”选项相关),则为每个月中作业的 freq_type 的执行频率。freq_relative_interval的数据类型为 int,默认值为 0,可以是下列值之一。在 freq_type 不等于 32 的情况下将忽略 freq_relative_interval。- 值 - 说明(单位) - 1 - 第一个 - 2 - 第二个 - 4 - 第三个 - 8 - 第四个 - 16 - 最后一个 
- [ @freq_recurrence_factor = ] freq_recurrence_factor
 作业的两次计划执行之间的间隔周数或月数。只有 freq_type 为 8、16 或 32 时,才会使用freq_recurrence_factor。freq_recurrence_factor为 int,默认值为 0。
- [ @active_start_date = ] active_start_date
 开始执行作业的日期。active_start_date的数据类型为 int,默认值为 NULL,指示当天的日期。日期格式为 YYYYMMDD。如果 active_start_date 不为 NULL,则日期必须大于或等于 19900101。创建计划后,请检查开始日期,确认该日期为正确的日期。有关详细信息,请参阅创建计划中的“计划开始日期”。
- [ @active_end_date = ] active_end_date
 停止执行作业的日期。active_end_date 的数据类型为 int,默认值为 99991231,指示 9999 年 12 月 31 日。格式为 YYYYMMDD。
- [ @active_start_time = ] active_start_time
 在 active_start_date 和 active_end_date 之间的任何一天开始执行作业的时间。active_start_time 的数据类型为 int,默认值为 000000,指示 24 小时制的上午 12:00:00,并且必须使用 HHMMSS 的格式输入。
- [ @active_end_time = ] active_end_time
 在 active_start_date 和 active_end_date 之间任何一天停止执行作业的时间。active_end_time 的数据类型为 int,默认值为 235959,指示 24 小时制的晚上 11:59:59,必须使用 HHMMSS 的格式输入。
- [ @owner_login_name= ] 'owner_login_name'
 拥有该计划的服务器主体的名称。owner_login_name 的数据类型为 sysname,默认值为 NULL,指示计划由创建者拥有。
- [ @schedule_uid= ] schedule_uidOUTPUT
 计划的唯一标识符。schedule_uid 是数据类型为 uniqueidentifier 的变量。
- [ @schedule_id= ] schedule_idOUTPUT
 计划的标识符。schedule_id 是数据类型为 int 的变量。
- [ @originating_server= ] server_name
 标识只是为了提供一些信息。不提供支持。不保证以后的兼容性。
返回代码值
0(成功)或 1(失败)
结果集
无
备注
SQL Server Management Studio 为管理作业提供了一种图形化的简便方法,建议使用此方法来创建和管理作业基础结构。
权限
默认情况下,只有 sysadmin 固定服务器角色的成员才可以执行此存储过程。其他用户必须被授予 msdb 数据库中下列 SQL Server 代理固定数据库角色的权限之一:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色。
示例
A. 创建计划
以下示例将创建一个名为 RunOnce 的计划。此计划在创建当天的 23:30 运行一次。
USE msdb ;
GO
EXEC dbo.sp_add_schedule
    @schedule_name = N'RunOnce',
    @freq_type = 1,
    @active_start_time = 233000 ;
GO
B. 创建计划,将计划附加到多个作业
以下示例将创建一个名为 NightlyJobs 的计划:使用此计划的作业每天在服务器时间为 01:00 执行。该示例将计划附加到作业 BackupDatabase 和作业 RunReports。
| .gif) 注意: | 
|---|
| 此示例假定作业 BackupDatabase和作业RunReports已存在。 | 
USE msdb ;
GO
EXEC sp_add_schedule
    @schedule_name = N'NightlyJobs' ,
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 010000 ;
GO
EXEC sp_attach_schedule
   @job_name = N'BackupDatabase',
   @schedule_name = N'NightlyJobs' ;
GO
EXEC sp_attach_schedule
   @job_name = N'RunReports',
   @schedule_name = N'NightlyJobs' ;
GO
请参阅
参考
sp_attach_schedule (Transact-SQL)
sp_detach_schedule (Transact-SQL)
sp_delete_schedule (Transact-SQL)
帮助和信息
更改历史记录
| 发布日期 | 历史记录 | 
|---|---|
| 2008 年 11 月 17 日 | 
 | 
| 2006 年 12 月 12 日 | 
 | 
| 2006 年 7 月 17 日 | 
 | 
| 2006 年 4 月 14 日 | 
 |