本主题介绍了如何使用存储过程修改 Microsoft SQL Server 代理主作业。

更改作业定义计划的详细信息

1.       执行 sp_update_schedule

在作业中添加、更改或删除步骤

1.       执行 sp_add_jobstep 来添加新的作业步骤。

2.       执行 sp_update_jobstep 来更改原先存在的作业步骤。

3.       执行 sp_delete_jobstep 来删除原先存在的作业。

修改与作业相关联的目标服务器

1.       执行 sp_delete_jobserver 来删除当前与作业相关联的服务器。

2.       执行 sp_add_jobserver 将某个服务器与当前作业相关联。

sp_add_schedule (Transact-SQL)

更新日期: 2007   

创建一个可由任意数量的作业使用的计划。

语法

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_type 为 32(与“每月”选项相关),则为每个月中作业的 freq_interval 的执行频率。freq_relative_interval 为 int,默认值为 0,并可以成为这些值中的一个。在freq_type 不等于 32 的情况下将忽略 freq_relative_interval

说明(单位)

1

第一个

2

第二个

4

第三个

8

第四个

16

最后一个

@freq_recurrence_factor = freq_recurrence_factor

作业的两次计划执行之间的间隔周数或月数。只有 freq_type 为 816 或 32 时,才会使用 freq_recurrence_factorfreq_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_uid OUTPUT

计划的唯一标识符。schedule_uid 是数据类型为 uniqueidentifier 的变量。

@schedule_id= ] schedule_id OUTPUT

计划的标识符。schedule_id 是数据类型为 int 的变量。

@originating_server= ] server_name

保留为仅供 SQL Server 内部使用。不保证以后的兼容性。

返回代码值

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。

注意:

此示例假定作业 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

     

SQL Server 2005 联机丛书(2007 年 9 月)

sp_update_schedule (Transact-SQL)

更改 SQL Server 代理计划的设置。

语法

sp_update_schedule     {   [ @schedule_id = ] schedule_id

| [ @name = ] 'schedule_name' }

[ , [ @new_name = ] 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 = ] 'owner_login_name' ]

[ , [ @automatic_post =] automatic_post ]

参数

@schedule_id = schedule_id

要修改的计划的标识符。schedule_id 的数据类型为 int,无默认值。必须指定 schedule_id 或 schedule_name

@name = 'schedule_name'

要修改的计划的名称。schedule_name 的数据类型为 sysname,无默认值。必须指定 schedule_id 或 schedule_name

@new_name= ] new_name

计划的新名称。new_name 的数据类型为 sysname,默认值为 NULL。如果 new_name 为 NULL,则不更改计划名称。

@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,默认值为 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 = 工作日

10 = 休息日

64(SQLServerAgent 服务启动时)

freq_interval 未使用。

128

freq_interval 未使用。

@freq_subday_type = freq_subday_type

指定 freq_subday_interval 的单位。freq_subday_type 的数据类型为 int,默认值为 0,可以是下列值之一。

说明(单位)

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_interval 为 32(与“每月”选项相关)时,每月中作业的 freq_interval 的执行频率。freq_relative_interval 的数据类型为 int,默认值为 0,可以是下列值之一。

说明(单位)

1

第一个

2

第二个

4

第三个

8

第四个

16

最后一个

@freq_recurrence_factor = freq_recurrence_factor

作业的两次计划执行之间的间隔周数或月数。只有 freq_type 为 816 或 32 时,才会使用freq_recurrence_factorfreq_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,指示计划由创建者拥有。

@automatic_post =automatic_post

保留。

返回代码值

0(成功)或 1(失败)

备注

所有使用该计划的作业将立即使用新设置。但是,更改计划不会停止当前正在运行的作业。

权限

默认情况下,只有 sysadmin 固定服务器角色的成员才可以执行此存储过程。其它用户必须被授予 msdb 数据库中下列 SQL Server 代理固定数据库角色的权限之一:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色

只有 sysadmin 的成员才可以修改其它用户拥有的计划。

如何修改 SQL Server 代理主作业 (Transact-SQL)的更多相关文章

  1. 第九篇 SQL Server代理了解作业和安全

    本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...

  2. 第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  3. 【译】第九篇 SQL Server代理了解作业和安全

    本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...

  4. 【译】第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  5. sql server代理中作业执行SSIS包失败

    RT,执行失败了,总是只提示一句“以xxxx用户身份执行失败”,很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssi ...

  6. SQL Server 批量创建作业(备份主分区)

    一. 需求背景 在我的数据库实例中,有很多类似下图所示的数据库,这些数据库的名称是有规律的,每个数据库包含的表都是相同的,其中2个表是类似流水记录的表,表的数据量会比较大,占用的空间有几十G到上百G不 ...

  7. SQL Server 批量主分区备份(Multiple Jobs)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 案例分析(Case) 方案一(Solution One) 方案二(Solution Two) ...

  8. SQL Server 批量主分区备份(One Job)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 案例分析(Case) 实现代码(SQL Codes) 主分区完整.差异还原(Primary B ...

  9. SQL Server代理(7/12):作业活动监视器

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的前几篇文章里,你创建配置了SQ ...

随机推荐

  1. Android 程序中得到root activity的引用

    今天写anroid时,想获得一个root activity的引用. ios中这个很简单, [UIApplication sharedApplication].keyWindow 得到window对象, ...

  2. ACM/ICPC 之 差分约束系统两道(ZOJ2770-POJ1201)

    当对问题建立数学模型后,发现其是一个差分方程组,那么问题可以转换为最短路问题,一下分别选用Bellmanford-SPFA解题 ZOJ2770-Burn the Linked Camp //差分约束方 ...

  3. SAP SMARTFORM 变量显示技巧

    &symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位&symbol (n)&       只显示前N位&sym ...

  4. win7 ubuntu10.04双系统,重装win7后,修复双启动项

    进入ubuntu的liveCD(即在试用ubuntu里),在终端里操作 首先要找到自己的ubuntu系统挂载在那个sda下面.可以用sudo fdisk -l 这个命令.然后: 1. sudo -i ...

  5. [Android] 关于getinstalledpackages参数的分析

    reference to  : http://blog.csdn.net/luojiusan520/article/details/47696891 getinstalledpackages()的方法 ...

  6. September 9th 2016 Week 37th Friday

    Within you, I lose myself. 有了你,我迷失了自我. I never had such feeling, maybe just because I never invested ...

  7. Git 操作的一些场景

    1. 某些不需要的文件/文件夹,如:/build 之类,在添加对应的gitignore之前Push了,导致每次编译都会产生新的文件 解决方法:直接删掉不需要的文件/文件夹,然后push gitigno ...

  8. [转]DB2时间类函数

    Src URL:http://www.cnblogs.com/wanghonghu/archive/2012/05/25/2518604.html 1.db2可以通过SYSIBM.SYSDUMMY1. ...

  9. sql boolean类型

    关于 MySQL 的 boolean 和 tinyint(1) boolean类型MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint ...

  10. Loadrunner中Throughput(吞吐量)的分析与计算

    Throughput翻译为吞吐量,按照常规理解网络吞吐量表示在单位时间内通过网卡数据量之和,其中即包括本机网卡发送出去的数据量也包括本机网卡接收到的数据量,但这个理解在Loadrunner记录的Thr ...