添加由 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 使用相同的值。
说明 当 delete_level 为 3 时,只执行一次作业,而不管任何为该作业定义的调度如何。而且,如果作业将其自身删除,则该作业的历史也将被删除。
[ @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 角色。
此示例添加一个名为 NightlyBackups 的新作业。
USE msdb
EXEC sp_add_job @job_name = 'NightlyBackups'
下面的示例创建名为 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