sp_help_job (Transact-SQL)

适用范围:SQL Server

返回有关SQL Server 代理用于在 SQL Server 中执行自动化活动的作业的信息。

Transact-SQL 语法约定

语法

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 可以是 LOCALMULTI-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_statusint,可以是以下值之一。

说明
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 = Succeeded
3 = 已取消
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_namesp_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 = Succeeded
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 计划是否处于活动状态(10
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 = Succeeded
3 = 已取消
5 = 未知
last_outcome_message nvarchar(1024) 作业上一次在这个目标服务器上运行时的结果消息。

权限

可以授予 EXECUTE 此过程的权限,但在 SQL Server 升级期间可能会重写这些权限。

其他用户必须被授予数据库中以下SQL Server 代理固定数据库角色msdb之一:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色

SQLAgentUserRole 的成员只能查看他们拥有的作业。 sysadminSQLAgentReaderRole 和 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