Transact-SQL 参考

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'

是作业描述。descriptionnvarchar(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_leveleventlog_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 使用相同的值。

说明  当 delete_level3 时,只执行一次作业,而不管任何为该作业定义的调度如何。而且,如果作业将其自身删除,则该作业的历史也将被删除。

[ @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

请参见

sp_add_jobschedule

sp_add_jobstep

sp_delete_job

sp_help_job

sp_help_jobstep

sp_update_job

系统存储过程