如何修改 SQL Server 代理主作业 (Transact-SQL)
本主题介绍了如何使用存储过程修改 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 年 2 月 1 日
创建一个可由任意数量的作业使用的计划。
语法
|
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 为 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_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 为 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,指示计划由创建者拥有。
[ @automatic_post =] automatic_post
保留。
返回代码值
0(成功)或 1(失败)
备注
所有使用该计划的作业将立即使用新设置。但是,更改计划不会停止当前正在运行的作业。
权限
默认情况下,只有 sysadmin 固定服务器角色的成员才可以执行此存储过程。其它用户必须被授予 msdb 数据库中下列 SQL Server 代理固定数据库角色的权限之一:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色。
只有 sysadmin 的成员才可以修改其它用户拥有的计划。
如何修改 SQL Server 代理主作业 (Transact-SQL)的更多相关文章
- 第九篇 SQL Server代理了解作业和安全
本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
- 第六篇 SQL Server代理深入作业步骤工作流
本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...
- 【译】第九篇 SQL Server代理了解作业和安全
本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
- 【译】第六篇 SQL Server代理深入作业步骤工作流
本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...
- sql server代理中作业执行SSIS包失败
RT,执行失败了,总是只提示一句“以xxxx用户身份执行失败”,很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssi ...
- SQL Server 批量创建作业(备份主分区)
一. 需求背景 在我的数据库实例中,有很多类似下图所示的数据库,这些数据库的名称是有规律的,每个数据库包含的表都是相同的,其中2个表是类似流水记录的表,表的数据量会比较大,占用的空间有几十G到上百G不 ...
- SQL Server 批量主分区备份(Multiple Jobs)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 案例分析(Case) 方案一(Solution One) 方案二(Solution Two) ...
- SQL Server 批量主分区备份(One Job)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 案例分析(Case) 实现代码(SQL Codes) 主分区完整.差异还原(Primary B ...
- SQL Server代理(7/12):作业活动监视器
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的前几篇文章里,你创建配置了SQ ...
随机推荐
- Java for LeetCode 234 Palindrome Linked List
解题思路: O(1)的空间复杂度,意味着不能通过开一个List来解决问题.我们可以把List分成前后两个部分,后半部分通过指针的相互赋值进行翻转即可. JAVA实现如下: public static ...
- SQL Server 子查询
这些主要是老师上课讲的一些知识点,自己做了一些整理放在这里~~~ 子查询可以是标量的.多值的或是表值的. 在期待单个值的地方可以使用标量子查询.例如,以下查询返回具有最大员工编号的员工信息: SELE ...
- 【leetcode】Remove Linked List Elements(easy)
Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 --& ...
- 【linux】gcc命令
来源:http://man.linuxde.net/gcc 语法 gcc(选项)(参数) 选项 -o:指定生成的输出文件: -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -wall:显示警 ...
- HDU 5995 Kblack loves flag ---BestCoder Round #90
题目链接 用两个布尔数组分别维护每个行/列是否被插过旗帜,最后枚举每一行.列统计答案即可.空间复杂度O(n+m),时间复杂度O(n+m+k). #include <cstdio> #inc ...
- stdafx.h的作用
// stdafx.h : include file for standard system include files,// or project specific include files th ...
- mysql 查看存储引擎的状态 show engine innodb status 详解
首先,让我们来了解一下 SHOW INNODB STATUS 输出的基础,它打印了很多关于 InnoDB 内部性能相关的计数器.统计.事务处理信息等.在 MySQL 5 中,InnoDB 的性能统计结 ...
- MD(markdown)语法
#标题1 ##标题2 段落->空行分隔 `加背景` [超链接](https://www.baidu.com) **加粗** _斜体_ ~~删除线~~ . 列表一 . 列表二 图片: ![alt ...
- Linux系统下设置Tomcat自启动
需要将tomcat加入自启动队列中,则需要进行如下的操作: 以root用户登录系统: cd /etc/rc.d/init.d/ vi tomcat 文件内容参考如下: #!/bin/sh # # to ...
- hdu 2546饭卡
用5块钱去买最贵的物品,用剩下的m-5块去买尽量多的物品 #include<stdio.h> #include<math.h> #include<vector> # ...