sp_help_job (Transact-SQL)
适用范围:SQL Server
返回有关SQL Server 代理用于在 SQL Server 中执行自动化活动的作业的信息。
语法
sp_help_job
[ [ @job_id = ] 'job_id' ]
[ , [ @job_name = ] N'job_name' ]
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] N'owner_login_name' ]
[ , [ @subsystem = ] N'subsystem' ]
[ , [ @category_name = ] N'category_name' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] execution_status ]
[ , [ @date_comparator = ] 'date_comparator' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_last_modified ]
[ , [ @description = ] N'description' ]
[ ; ]
参数
[ @job_id = ] 'job_id'
作业标识号。 @job_id是 uniqueidentifier,默认值为 NULL
.
若要查看特定作业, 必须指定@job_id 或 @job_name 。 省略 @job_id 和 @job_name 以返回有关所有作业的信息。
[ @job_name = ] N'job_name'
作业的名称。 @job_name为 sysname,默认值为 NULL
.
若要查看特定作业, 必须指定@job_id 或 @job_name 。 省略 @job_id 和 @job_name 以返回有关所有作业的信息。
[ @job_aspect = ] 'job_aspect'
要显示的作业属性。 @job_aspect是 varchar(9),可以是其中一个值。
值 | 说明 |
---|---|
ALL |
作业特征信息 |
JOB |
工作信息 |
SCHEDULES |
计划信息 |
STEPS |
作业步骤信息 |
TARGETS |
目标信息 |
[ @job_type = ] 'job_type'
要包括在报表中的作业的类型。@job_type为 varchar(12),默认值为 NULL
. @job_type 可以是 LOCAL
或 MULTI-SERVER
。
[ @owner_login_name = ] N'owner_login_name'
作业所有者的登录名。 @owner_login_name为 sysname,默认值为 NULL
.
[ @subsystem = ] N'subsystem'
子系统的名称。 @subsystem为 nvarchar(40),默认值为 NULL
.
[ @category_name = ] N'category_name'
类别的名称。 @category_name为 sysname,默认值为 NULL
.
[ @enabled = ] enabled
一个指示是为启用的作业还是为禁用的作业显示信息的数字。 @enabled为 tinyint,默认值为 NULL
.
1
指示已启用的作业。0
指示已禁用的作业。
[ @execution_status = ] execution_status
作业的执行状态。 @execution_status 为 int,可以是以下值之一。
值 | 说明 |
---|---|
0 |
仅返回那些未空闲或挂起的作业。 |
1 |
正在执行。 |
2 |
正在等待线程。 |
3 |
在两次重试之间。 |
4 |
空闲。 |
5 |
暂停。 |
7 |
正在执行完成操作。 |
[ @date_comparator = ] 'date_comparator'
用于@date_created和@date_last_modified比较的比较运算符。 @date_comparator为 char(1),可以是=
,<
>
也可以。
[ @date_created = ] date_created
创建作业的日期。 @date_created为日期/时间,默认值为 NULL
.
[ @date_last_modified = ] date_last_modified
上次修改作业的日期。 @date_last_modified为日期/时间,默认值为 NULL
.
[ @description = ] N'description'
作业的说明。 @description为 nvarchar(512),默认值为 NULL
. @description可以包含用于模式匹配的通配符。
返回代码值
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 = Succeeded3 = 已取消5 = 未知 |
next_run_date |
int | 计划作业下一次运行的日期。 |
next_run_time |
int | 计划作业下一次运行的时间。 |
next_run_schedule_id |
int | 下一个运行的计划的标识号。 |
current_execution_status |
int | 当前执行状态:1 = 正在执行2 = 等待线程3 = 重试之间4 = 空闲5 = 已挂起6 = 已过时7 = PerformingCompletionActions |
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 | 4 如果是on_success_action ,则表示要执行的下一步。 |
on_fail_action |
nvarchar(4000) | 步骤失败时所采取的操作。 值与值 on_success_action 相同。 |
on_fail_step_id |
int | 4 如果是on_fail_action ,则表示要执行的下一步。 |
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 = Succeeded3 = 已取消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 = SQL Server 代理服务启动时运行。 |
freq_interval |
int | 执行作业的天数。 该值取决于值 freq_type 。 有关详细信息,请参阅 sp_add_schedule |
freq_subday_type |
int | 的单位。freq_subday_interval 有关详细信息,请参阅 sp_add_schedule |
freq_subday_interval |
int | freq_subday_type 每次执行作业之间要发生的时间段数。 有关详细信息,请参阅 sp_add_schedule |
freq_relative_interval |
int | 计划作业的每月出现次数 freq_interval 。 有关详细信息,请参阅 sp_add_schedule |
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 = Succeeded3 = 已取消5 = 未知 |
last_outcome_message |
nvarchar(1024) | 作业上一次在这个目标服务器上运行时的结果消息。 |
权限
可以授予 EXECUTE
此过程的权限,但在 SQL Server 升级期间可能会重写这些权限。
其他用户必须被授予数据库中以下SQL Server 代理固定数据库角色msdb
之一:
- 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