sp_help_job (Transact-SQL)
返回有关 SQL Server 代理用来在 SQL Server 中执行自动活动的作业的信息。
语法
sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
参数
[ @job_id =] job_id
作业标识号。job_id 的数据类型为 uniqueidentifier,默认值为 NULL。[ @job_name =] 'job_name'
作业的名称。job_name 的数据类型为 sysname,默认值为 NULL。注意 必须指定 job_id 或 job_name,但不能两个都指定。
[ @job_aspect =] 'job_aspect'
要显示的作业属性。job_aspect 的数据类型为 varchar(9),默认值为 NULL,可以是下列值之一:值
说明
ALL
作业特征信息
JOB
作业信息
SCHEDULES
计划信息
STEPS
作业步骤信息
TARGETS
目标信息
[ @job_type =] 'job_type'
报表中要包括的作业类型。job_type 的数据类型为 varchar(12),默认值为 NULL。job_type 可以为 LOCAL 或 MULTI-SERVER。[ @owner_login_name =] 'login_name'
作业所有者的登录名。login_name 的数据类型为 sysname,默认值为 NULL。[ @subsystem =] 'subsystem'
子系统的名称。subsystem 的数据类型为 nvarchar(40),默认值为 NULL。[ @category_name =] 'category'
类别的名称。category 的数据类型为 sysname,默认值为 NULL。[ @enabled =] enabled
指示是为启用作业还是为禁用作业显示信息的数字。enabled 的数据类型为 tinyint,默认值为 NULL。1 表示已启用作业,0 表示已禁用作业。[ @execution_status =] status
作业的执行状态。status 的数据类型为 int,默认值为 NULL,可以是下列值之一:值
说明
0
只返回那些空闲的或挂起的作业。
1
正在执行。
2
正在等待线程。
3
在两次重试之间。
4
空闲。
5
挂起。
7
正在执行完成操作。
[ @date_comparator =] 'date_comparison'
比较 date_created 和 date_modified 时使用的比较运算符。date_comparison 的数据类型为 char(1),可以为 =、< 或 >。[ @date_created =] date_created
创建作业的日期。date_created 的数据类型为 datetime,默认值为 NULL。[ @date_last_modified =] date_modified
上次修改作业的日期。date_modified 的数据类型为 datetime,默认值为 NULL。[ @description =] 'description_pattern'
作业的说明。description_pattern 的数据类型为 nvarchar(512),默认值为 NULL。description_pattern 可以包含 SQL Server 通配符,以实现模式匹配。
返回代码值
0(成功)或 1(失败)
结果集
如果未指定参数,则 sp_help_job 返回下面的结果集。
列名 |
数据类型 |
说明 |
---|---|---|
job_id |
uniqueidentifier |
作业的唯一 ID。 |
originating_server |
nvarchar(30) |
作业来自的服务器的名称。 |
name |
sysname |
作业的名称。 |
enabled |
tinyint |
指示是否启用待执行的作业。 |
description |
nvarchar(512) |
对作业的说明。 |
start_step_id |
int |
执行作业的起始步骤的 ID。 |
category |
sysname |
作业类别。 |
owner |
sysname |
作业所有者。 |
notify_level_eventlog |
int |
位掩码,它表示在何种情况下通知事件应记录到 Microsoft Windows 应用程序日志中。可以是下列值之一: 0 = 从不 1 = 当作业成功时 2 = 当作业失败时 3 = 当作业完成时(不考虑作业结果) |
notify_level_email |
int |
位掩码,它表示当作业完成时,在什么情况下应该发送一个通知电子邮件。可能值与 notify_level_eventlog 的可能值相同。 |
notify_level_netsend |
int |
位掩码,它表示当作业完成时,在什么情况下应该发送一个网络消息。可能值与 notify_level_eventlog 的可能值相同。 |
notify_level_page |
int |
位掩码,它表示当作业完成时,在什么情况下应该发送一个寻呼。可能值与 notify_level_eventlog 的可能值相同。 |
notify_email_operator |
sysname |
要通知的操作员的电子邮件名称。 |
notify_netsend_operator |
sysname |
在发送网络消息时所使用的计算机或用户的名称。 |
notify_page_operator |
sysname |
在发送寻呼时所使用的计算机或用户的名称。 |
delete_level |
int |
位掩码,它表示当作业完成时,在什么情况下应该删除作业。可能值与 notify_level_eventlog 的可能值相同。 |
date_created |
datetime |
作业的创建日期。 |
date_modified |
datetime |
上次修改作业的日期。 |
version_number |
int |
作业的版本(每次修改作业时都自动对其进行更新)。 |
last_run_date |
int |
作业上一次开始执行的日期。 |
last_run_time |
int |
作业上一次开始执行的时间。 |
last_run_outcome |
int |
作业上一次运行时所得到的结果: 0= 失败 1 = 成功 3 = 已取消 5 = 未知 |
next_run_date |
int |
计划作业下一次运行的日期。 |
next_run_time |
int |
计划作业下一次运行的时间。 |
next_run_schedule_id |
int |
下一个运行的计划的标识号。 |
current_execution_status |
int |
当前的执行状态。 |
current_execution_step |
sysname |
作业中当前的执行步骤。 |
current_retry_attempt |
int |
如果作业正在运行,并且已经重试过该步骤,那么这就是当前的重试尝试。 |
has_step |
int |
作业具有的作业步骤数。 |
has_schedule |
int |
作业具有的作业计划数。 |
has_target |
int |
作业具有的目标服务器数。 |
type |
int |
作业类型。 1 = 本地作业。 2 = 多服务器作业。 0 = 作业没有目标服务器。 |
如果指定了 job_id 或 job_name,则 sp_help_job 针对作业步骤、作业计划及作业目标服务器返回下面这些额外的结果集。
下面是针对作业步骤的结果集。
列名 |
数据类型 |
说明 |
---|---|---|
step_id |
int |
步骤的唯一(是针对该作业的)标识符。 |
step_name |
sysname |
步骤的名称。 |
subsystem |
nvarchar(40) |
执行步骤命令的子系统。 |
command |
nvarchar(3200) |
执行的命令。 |
flags |
nvarchar(4000) |
控制步骤行为的值的位掩码。 |
cmdexec_success_code |
int |
对于 CmdExec 步骤,这是已成功执行的命令的进程退出代码。 |
on_success_action |
nvarchar(4000) |
步骤成功时的操作: 1 = 成功后退出。 2 = 失败后退出。 3 = 转到下一步。 4 = 转至步骤。 |
on_success_step_id |
int |
如果 on_success_action 为 4,即指明下一步执行步骤 4。 |
on_fail_action |
nvarchar(4000) |
步骤失败时所采取的操作。值与 on_success_action 的值相同。 |
on_fail_step_id |
int |
如果 on_fail_action 为 4,即指明下一步执行步骤 4。 |
server |
sysname |
保留。 |
database_name |
sysname |
对于 Transact-SQL 步骤,这是将在其中执行命令的数据库。 |
database_user_name |
sysname |
对于 Transact-SQL 步骤,这是命令执行时所在的数据库用户上下文。 |
retry_attempts |
int |
在认定步骤已经失败之前,应该对命令进行重试的最大次数(如果命令没有成功)。 |
retry_interval |
int |
两次重试尝试之间的间隔(以分钟为单位)。 |
os_run_priority |
varchar(4000) |
保留。 |
output_file_name |
varchar(200) |
命令输出应写入到的文件(仅限 Transact-SQL 和 CmdExec 步骤)。 |
last_run_outcome |
int |
步骤上一次运行的结果: 0= 失败 1 = 成功 3 = 已取消 5 = 未知 |
last_run_duration |
int |
步骤上一次运行的持续时间(以秒为单位)。 |
last_run_retries |
int |
步骤上一次运行时,重试命令的次数。 |
last_run_date |
int |
步骤上一次开始执行的日期。 |
last_run_time |
int |
步骤上一次开始执行的时间。 |
proxy_id |
int |
作业步骤的代理。 |
下面是针对作业计划的结果集。
列名 |
数据类型 |
说明 |
---|---|---|
schedule_id |
int |
计划的标识符(对所有作业都是唯一的)。 |
schedule_name |
sysname |
计划的名称(只对该作业是唯一的)。 |
enabled |
int |
表示计划是活动的 (1) 还是不活动的 (0)。 |
freq_type |
int |
表示何时执行作业的值: 1 = 一次 4 = 每天 8 = 每周 16 = 每月 32 = 每月,相对于 freq_interval 64 = 当 SQLServerAgent 服务启动时运行。 |
freq_interval |
int |
执行作业的天数。该值依赖于 freq_type 的值。有关详细信息,请参阅 sp_add_schedule (Transact-SQL)。 |
freq_subday_type |
Int |
freq_subday_interval 的单位。有关详细信息,请参阅 sp_add_schedule (Transact-SQL)。 |
freq_subday_interval |
int |
在每次执行作业之间发生的 freq_subday_type 的周期数。有关详细信息,请参阅 sp_add_schedule (Transact-SQL)。 |
freq_relative_interval |
int |
在每个月中,计划作业的 freq_interval 的出现次数。有关详细信息,请参阅 sp_add_schedule (Transact-SQL)。 |
freq_recurrence_factor |
int |
作业的已计划执行日期之间的间隔月数。 |
active_start_date |
int |
开始执行作业的日期。 |
active_end_date |
int |
结束执行作业的日期。 |
active_start_time |
int |
在 active_start_date 那一天,开始执行作业的时间。 |
active_end_time |
int |
在 active_end_date 那一天,结束执行作业的时间。 |
date_created |
datetime |
创建计划的日期。 |
schedule_description |
nvarchar(4000) |
对计划的英语说明(如果需要的话)。 |
next_run_date |
int |
计划下一次引发作业运行的日期。 |
next_run_time |
int |
计划下一次引发作业运行的时间。 |
schedule_uid |
uniqueidentifier |
计划的标识符。 |
job_count |
int |
返回引用此计划的作业数。 |
下面是针对作业目标服务器的结果集。
列名 |
数据类型 |
说明 |
---|---|---|
server_id |
int |
目标服务器的标识符。 |
server_name |
nvarchar(30) |
目标服务器的计算机名称。 |
enlist_date |
datetime |
将目标服务器登记到主服务器的日期。 |
last_poll_date |
datetime |
目标服务器上一次轮询主服务器的日期。 |
last_run_date |
int |
作业上一次在此目标服务器上开始执行的日期。 |
last_run_time |
int |
作业上一次在这个目标服务器上开始执行的时间。 |
last_run_duration |
int |
作业上一次在这个目标服务器上运行的持续时间。 |
last_run_outcome |
tinyint |
作业上一次在此服务器上运行的结果: 0= 失败 1 = 成功 3 = 已取消 5 = 未知 |
last_outcome_message |
nvarchar(1024) |
作业上一次在这个目标服务器上运行时的结果消息。 |
权限
默认情况下,只有 sysadmin 固定服务器角色的成员才可以执行此存储过程。其他用户必须被授予 msdb 数据库中下列 SQL Server 代理固定数据库角色的权限之一:
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色。
SQLAgentUserRole 的成员只可以查看其所拥有的作业。sysadmin、SQLAgentReaderRole 和 SQLAgentOperatorRole 的成员可以查看所有本地作业和多服务器作业。
示例
A. 列出所有作业的信息
以下示例执行不带参数的 sp_help_job 过程,从而为 msdb 数据库中当前定义的所有作业返回信息。
USE msdb ;
GO
EXEC dbo.sp_help_job ;
GO
B. 列出与特定条件相匹配的作业的信息
以下示例列出属于 françoisa(在其中启用和执行作业)的多服务器作业的作业信息。
USE msdb ;
GO
EXEC dbo.sp_help_job
@job_type = N'MULTI-SERVER',
@owner_login_name = N'françoisa',
@enabled = 1,
@execution_status = 1 ;
GO
C. 列出作业信息的所有特征
以下示例列出 NightlyBackups 作业信息的所有特征。
USE msdb ;
GO
EXEC dbo.sp_help_job
@job_name = N'NightlyBackups',
@job_aspect = N'ALL' ;
GO