sp_add_job
添加由 SQLServerAgent 服务执行的新作业。
语法
sp_add_job [ @job_name = ] 'job_name'
[ , [ @enabled = ] enabled ]
[ , [ @description = ] 'description' ]
[ , [ @start_step_id = ] step_id ]
[ , [ @category_name = ] 'category' ]
[ , [ @category_id = ] category_id ]
[ , [ @owner_login_name = ] 'login' ]
[ , [ @notify_level_eventlog = ] eventlog_level ]
[ , [ @notify_level_email = ] email_level ]
[ , [ @notify_level_netsend = ] netsend_level ]
[ , [ @notify_level_page = ] page_level ]
[ , [ @notify_email_operator_name = ] 'email_name' ]
[ , [ @notify_netsend_operator_name = ] 'netsend_name' ]
[ , [ @notify_page_operator_name = ] 'page_name' ]
[ , [ @delete_level = ] delete_level ]
[ , [ @job_id = ] job_id OUTPUT ]
参数
[ @job_name = ] 'job_name'
作业的名称。该名称必须唯一,不能包含百分比 (%) 字符。job_name 的数据类型为 sysname,没有默认设置。
[ @enabled = ] enabled
指明所添加的作业的状态。enabled 的数据类型为 tinyint,默认设置为 1(启用)。如果为 0,则不启用作业,也不按照其调度运行该作业;但是可以手工运行该作业。
[ @description = ] 'description'
是作业描述。description 是 nvarchar(512) 类型,其默认值为 NULL。如果省略 description,则使用"无可用的描述"。
[ @start_step_id = ] step_id
该作业所要执行的第一步的标识号。step_id 的数据类型为 int,默认设置为 1。
[ @category_name = ] 'category'
是作业分类。category 的数据类型为 sysname,默认设置为 NULL。
[ @category_id = ] category_id
用来指定作业分类的与语言无关的机制。category_id 的数据类型为 int,默认设置为 NULL。
[ @owner_login_name = ] 'login'
是拥有作业的登录的名称。login 的数据类型为 sysname,默认设置为 NULL,此时可解释为当前的登录名。
[ @notify_level_eventlog = ] eventlog_level
指明何时将该作业的项目放进 Microsoft® Windows NT® 应用程序日志中的值。eventlog_level 的数据类型为 int,可以为下列值之一。
值
描述
0 |
从不 |
1 |
成功后 |
2(默认值) |
失败后 |
3 |
始终 |
[ @notify_level_email = ] email_level
用于指明作业完成后何时发送电子邮件的值。email_level 的数据类型为 int,设置为 0,表示成功发送。email_level 和 eventlog_level 使用相同的值。
[ @notify_level_netsend = ] netsend_level
用于指明作业完成后何时发送网络消息的值。netsend_level 的数据类型为 int,默认设置为 0,表示从不发送。netsend_level 和 eventlog_level 使用相同的值。
[ @notify_level_page = ] page_level
用于指明作业完成后何时发送呼叫的值。page_level 的数据类型为 int,默认设置为 0,表示从不发送。page_level 和 eventlog_level 使用相同的值。
[ @notify_email_operator_name = ] 'email_name'
当达到 email_level 时,电子邮件所发送到的人员的电子邮件名称。email_name 的数据类型为 sysname,默认设置为 NULL。
[ @notify_netsend_operator_name = ] 'netsend_name'
在该作业完成时,将网络消息发送到的操作员的名称。netsend_name 的数据类型为 sysname,默认设置为 NULL。
[ @notify_page_operator_name = ] 'page_name'
该作业完成时要呼叫的人员的名称。page_name 的数据类型为 sysname,默认设置为 NULL。
[ @delete_level = ] delete_level
用于指明何时删除作业的值。delete_value 的数据类型为 int,默认设置为 0,表示从不删除。delete_level 和 eventlog_level 使用相同的值。
<!--NOTE-->
说明 当 delete_level 为 3 时,只执行一次作业,而不管任何为该作业定义的调度如何。而且,如果作业将其自身删除,则该作业的历史也将被删除。
<!--/NOTE-->
[ @job_id = ] job_id OUTPUT
指派给成功创建的作业的作业标识号。job_id 是 uniqueidentifer 类型的输出变量,默认设置为 NULL。
返回代码值
0(成功)或 1(失败)
结果集
无
注释
@originating_server 存在于 sp_add_job 中,但没有列在参数里。保留 @originating_server 用于内部使用。
当执行 sp_add_job 添加完作业后,可使用 sp_add_jobstep 添加执行该作业活动的步骤。sp_add_jobschedule 可用于创建 SQLServerAgent 服务用于执行作业的调度。
SQL Server 企业管理器提供易于使用的图形方法来管理作业,建议使用该方法创建和管理作业基本结构。
权限
执行权限默认授予 public 角色。
示例
A. 添加作业
此示例添加一个名为 NightlyBackups 的新作业。
USE msdb
EXEC sp_add_job @job_name = 'NightlyBackups'
B. 添加带有呼叫程序、电子邮件和网络发送信息的作业
下面的示例创建名为 Ad hoc Sales Data Backup 的作业,该作业通知 janetl(通过寻呼机、电子邮件或网络弹出式消息)作业是否失败,并删除已成功完成的作业。
USE msdb
EXEC sp_add_job @job_name = 'Ad hoc Sales Data Backup',
@enabled = 1,
@description = 'Ad hoc backup of sales data',
@owner_login_name = 'janet1',
@notify_level_eventlog = 2,
@notify_level_email = 2,
@notify_level_netsend = 2,
@notify_level_page = 2,
@notify_email_operator_name = 'janet1',
@notify_netsend_operator_name = 'janet1',
@notify_page_operator_name = 'janet1',
@delete_level = 1
分享到:
相关推荐
SQL Server Agent 是一种 Windows 服务,主要负责在 SQL Server 上执行计划任务。这些任务可以包括但不限于备份数据库、执行存储过程或脚本等。由于 SQL Server 的用户权限仅限于 SQL Server 范围内,因此当任务需要...
- 使用`sp_add_schedule`来定义作业执行的时间表。 - 使用`sp_attach_schedule`将时间表与作业关联起来。 3. **执行备份作业**: - 一旦作业被定义并调度好,它就会按照设定的时间自动运行。 - 可以通过SQL ...
4. **创建作业步骤**:使用`sp_add_jobstep`系统存储过程定义具体的作业步骤,例如执行SQL命令。 ```sql exec msdb..sp_add_jobstep @job_name = @jobname, @step_name = '数据测试', @subsystem = TSQL, @...
- 在执行任何备份任务之前,必须确保`SQLServerAgent`服务已经启动,否则定时任务将无法执行。 - 需要注意的是,在实际部署中,应考虑备份文件的存放位置、备份文件的命名规则以及备份策略等因素。 - 调度规则中的`@...
通过`sp_add_job`、`sp_add_jobstep`等存储过程可以创建和配置作业,而`sp_start_job`则用于启动作业执行。 在实践中,了解并熟练掌握这些SQL Server的备份和恢复技术是至关重要的。这包括理解不同的备份类型(完整...
- **用途**:添加由SQL Server Agent服务执行的新作业。 - **示例**: ```sql EXEC sp_add_job @job_name = N'MyJob', @enabled = 1; ``` ##### 25. **sp_add_jobschedule** - **用途**:创建作业计划。 - **...
- 在T-SQL脚本中,可以使用`sp_add_job`、`sp_add_schedule`和`sp_attach_schedule`等存储过程创建和调度作业。 6. **备份文件的存储和管理**: - 备份文件应保存在安全、可靠的存储位置,考虑使用网络存储或云...
脚本涉及到`sp_add_category`,`sp_add_job`和`sp_add_jobstep`等存储过程,用于创建名为"PrimaveraJobs"的分类,删除已存在的同名作业,然后添加新的作业及其执行命令。 4. **故障排查**:如果问题仍然存在,应...
exec master.dbo.xp_servicecontrol "start", "SQLSERVERAGENT" ``` ##### 3.2 创建和执行作业 1. **删除旧作业**(如果存在)。 2. **添加新作业**。 3. **添加作业步骤**。 4. **添加作业服务器**。 5. **启动...
在SQL Server中,创建job通常通过SQL Server代理服务(SQL Server Agent)来实现。以下是创建job的基本步骤: 1. 首先确保SQL Server代理服务已启动。在服务管理器中,启动"SQL Server Agent (MSSQLServer)"服务。 ...
首先,SQL Server中的作业(SQL Agent Job)是一种调度工具,用于执行计划的任务,如备份、数据清理、性能监控等。在VB.NET中,我们可以利用`System.Data.SqlClient`命名空间下的`SqlConnection`、`SqlCommand`等类...
总结来说,本文主要介绍了如何在SQL Server环境中通过存储过程`sp_send_dbmail`和SQL Server Agent Job来实现定时发送包含数据库查询结果的邮件,这对于监控数据库状态、自动报告异常情况等具有很高的实用价值。
如果需要添加新的作业,则使用`sp_add_job`创建作业,通过`sp_add_jobserver`来指定作业在哪个服务器上运行。这些操作需要放在事务中,确保操作的原子性。 #### 4. 关键代码解析 - `@isAppendMedia`变量用于控制...
- 创建定时作业,可以使用SqlServer Management Studio或T-SQL脚本,通过sp_add_job等存储过程添加作业。 - 在定时作业中,可以指定作业的开始时间、重复频率以及相关的操作命令。 4. 文件删除操作: - 删除旧...
3. 在"Steps"选项卡中,创建新的Job步骤,编写Transact-SQL脚本调用`sp_send_dbmail`,并传递相应的参数。 4. 在"Schedule"选项卡中,设置Job的执行计划,如每天、每周或在特定事件触发时执行。 5. 最后,保存并激活...
- 通过SQL Server Agent创建作业来定期执行存储过程,例如: - 每小时执行一次`SP_SynRMSInfo`。 - 每15分钟执行一次`SP_UpdateRMSInfo`。 - 每天零点执行`SP_SyncUser`。 - 每月第一个星期日执行一次`VMS_...