sp_add_job (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例
创建由SQL Server 代理服务执行的新作业。
重要
Azure SQL 托管实例目前支持大多数(但不是所有)SQL Server 代理功能。 有关详细信息,请参阅 Azure SQL 托管实例与 SQL Server 的 T-SQL 区别。
语法
sp_add_job
[ @job_name = ] N'job_name'
[ , [ @enabled = ] enabled ]
[ , [ @description = ] N'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为 nvarchar(128),没有默认值。 必需。
@enabled
指示添加的作业的状态。 enabled 为 tinyint,默认值为 1
。 如果 0
作业未启用且未按计划运行;但是,它可以手动运行。
@description
作业的说明。 @description为 nvarchar(512),默认值为 NULL
. 如果 省略@description , N'No description available'
则使用。
@start_step_id
作业中要执行的第一个步骤的标识号。 @start_step_id为 int,默认值为 1
.
@category_name
作业的类别。 @category_name为 sysname,默认值为 NULL
.
@category_id
一种与语言无关的机制,用于指定作业类别。 @category_id为 int,默认值为 NULL
.
@owner_login_name
拥有该作业的登录的名称。 @owner_login_name 为 sysname,默认值 NULL
为 ,该名称解释为当前登录名。 只有 sysadmin 固定服务器角色的成员才能设置或更改@owner_login_name的值。 如果不是 sysadmin 角色的成员的用户集或更改@owner_login_name的值,则执行此存储过程将失败,并返回错误。
@notify_level_eventlog
一个值,用于指示何时在 Microsoft Windows 应用程序日志中放入与该作业对应的项。 @notify_level_eventlog为 int,可以是以下值之一:
值 | 说明 |
---|---|
0 |
Never |
1 |
成功时 |
2 (默认值) |
在失败的情况下 |
3 |
始终 |
@notify_level_email
一个值,用于指示完成该作业后何时发送电子邮件。 @notify_level_email为 int,默认值为
@notify_level_netsend
一个值,用于指示完成该作业后何时发送网络消息。 @notify_level_netsend为 int,默认值0
表示从不。 @notify_level_netsend使用与@notify_level_eventlog相同的值。
@notify_level_page
一个值,用于指示完成该作业后何时发送寻呼。 @notify_level_page为 int,默认值为
@notify_email_operator_name
到达@notify_email_operator_name时要向其发送电子邮件的人员的电子邮件名称。 @notify_email_operator_name为 sysname,默认值为 NULL
.
@notify_netsend_operator_name
完成该作业后接收到网络消息的操作员的名称。 @notify_netsend_operator_name为 sysname,默认值为 NULL
.
@notify_page_operator_name
完成该作业后收到寻呼的接收人的名称。 @notify_page_operator_name为 sysname,默认值为 NULL
.
@delete_level
一个值,用于指示何时删除作业。 delete_value为 int,默认值为
注意
当 @delete_level 时 3
,无论为作业定义的任何计划,该作业只执行一次。 而且,如果作业将自身删除,则将同时删除该作业的历史记录。
@job_id 输出
成功创建作业后分配给作业的作业标识号。 @job_id是 uniqueidentifier 类型的输出变量,默认值为 NULL
.
返回代码值
0
(成功)或 1
(失败)。
结果集
无。
注解
@originating_server 存在于 sp_add_job
参数下,但未在参数下列出。 @originating_server 保留供内部使用。
执行作业以添加作业后 sp_add_job
, sp_add_jobstep
可用于添加执行作业活动的步骤。 sp_add_jobschedule
可用于创建SQL Server 代理服务用于执行作业的计划。
用于 sp_add_jobserver
设置执行作业的 SQL Server 实例,以及 sp_delete_jobserver
从 SQL Server 实例中删除该作业。 如果作业在多服务器环境中的一个或多个目标服务器上执行,则用于 sp_apply_job_to_targets
设置作业的目标服务器或目标服务器组。 若要从目标服务器或目标服务器组中删除作业,请使用 sp_remove_job_from_targets
。 Azure SQL 托管实例不支持多服务器管理(MSX/TSX)功能。
SQL Server Management Studio 为管理作业提供了一种图形化的简便方法,建议使用此方法来创建和管理作业基础结构。
此存储过程与用于Azure SQL 数据库的 Azure 弹性作业服务的类似对象共享名称sp_add_job
。 有关弹性作业版本的信息,请参阅jobs.sp_add_job(Azure 弹性作业)。
权限
此存储过程由 db_owner 角色拥有。 你可以为任何用户授予 EXECUTE
权限,但这些权限可能会在 SQL Server 升级期间被重写。
其他用户必须被授予数据库中以下SQL Server 代理固定数据库角色msdb
之一:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色。
只有 sysadmin 固定服务器角色的成员才能设置或更改@owner_login_name的值。 如果不是 sysadmin 角色的成员的用户集或更改@owner_login_name的值,则执行此存储过程将失败,并返回错误。
示例
A. 添加作业
此示例将添加一个名为 NightlyBackups
的新作业。
USE msdb;
GO
EXEC dbo.sp_add_job @job_name = N'NightlyBackups';
GO
B. 添加包含寻呼、电子邮件和网络发送信息的作业
该示例将创建一个名为 Ad hoc Sales Data Backup
的作业。如果该作业失败,则会通知 François Ajenstat
(通过寻呼、电子邮件或网络弹出消息);如果作业成功,则删除该作业。
注意
本例假定已经存在一个名为 François Ajenstat
的操作员和名为 françoisa
的登录名。
USE msdb;
GO
EXEC dbo.sp_add_job
@job_name = N'Ad hoc Sales Data Backup',
@enabled = 1,
@description = N'Ad hoc backup of sales data',
@owner_login_name = N'françoisa',
@notify_level_eventlog = 2,
@notify_level_email = 2,
@notify_level_netsend = 2,
@notify_level_page = 2,
@notify_email_operator_name = N'François Ajenstat',
@notify_netsend_operator_name = N'François Ajenstat',
@notify_page_operator_name = N'François Ajenstat',
@delete_level = 1;
GO
相关内容
- sp_add_schedule (Transact-SQL)
- sp_add_jobstep (Transact-SQL)
- sp_add_jobserver (Transact-SQL)
- sp_apply_job_to_targets (Transact-SQL)
- sp_delete_job (Transact-SQL)
- sp_delete_jobserver (Transact-SQL)
- sp_remove_job_from_targets (Transact-SQL)
- sp_help_job (Transact-SQL)
- sp_help_jobstep (Transact-SQL)
- sp_update_job (Transact-SQL)