sp_help_job (Transact-SQL)

适用于:SQL Server

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

Transact-SQL 语法约定

语法

  
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_iduniqueidentifier,默认值为 NULL。

[ @job_name = ] 'job_name' 作业的名称。 job_namesysname,默认值为 NULL。

注意

若要查看特定作业,必须指定 job_idjob_name 。 省略 job_idjob_name 以返回有关所有作业的信息。

[ @job_aspect = ] 'job_aspect' 要显示的作业属性。 job_aspectvarchar (9) ,默认值为 NULL,可以是其中一个值。

说明
ALL 作业特征信息
JOB 作业信息
附表 计划信息
步骤 作业步骤信息
目标 目标信息

[ @job_type = ] 'job_type' 要包含在报表中的作业类型。 job_typevarchar (12) ,默认值为 NULL。 job_type 可以是 本地多服务器

[ @owner_login_name = ] 'login_name' 作业所有者的登录名。 login_namesysname,默认值为 NULL。

[ @subsystem = ] 'subsystem' 子系统的名称。 子系统nvarchar (40) ,默认值为 NULL。

[ @category_name = ] 'category' 类别的名称。 categorysysname,默认值为 NULL。

[ @enabled = ] enabled 一个数字,指示是否显示已启用作业或已禁用作业的信息。 enabledtinyint,默认值为 NULL。 1 表示已启用作业, 0 表示已禁用作业。

[ @execution_status = ] status 作业的执行状态。 statusint,默认值为 NULL,可以是以下值之一。

说明
0 只返回那些空闲的或挂起的作业。
1 正在执行。
2 正在等待线程。
3 在两次重试之间。
4 空闲。
5 暂停。
7 正在执行完成操作。

[ @date_comparator = ] 'date_comparison' 用于比较 date_createddate_modified的比较运算符。 date_comparisonchar (1) ,可以是 =、 <、 或 >。

[ @date_created = ] date_created 创建作业的日期。 date_createddatetime,默认值为 NULL。

[ @date_last_modified = ] date_modified 上次修改作业的日期。 date_modifieddatetime,默认值为 NULL。

[ @description = ] 'description_pattern' 作业的说明。 description_patternnvarchar (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 作业类别。
所有者 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 当前执行状态:

1 = 正在执行

2 = 正在等待线程

3 = 重试之间

4 = 空闲

5 = 挂起

6 = 已过时

7 = 执行CompletionActions
current_execution_step sysname 作业中当前的执行步骤。
current_retry_attempt int 如果作业正在运行,并且已经重试过该步骤,那么这就是当前的重试尝试。
has_step int 作业具有的作业步骤数。
has_schedule int 作业具有的作业计划数。
has_target int 作业具有的目标服务器数。
type int 作业的类型。

1 = 本地作业。

2 = 多服务器作业。

0 = 作业没有目标服务器。

如果指定 了job_idjob_namesp_help_job 将返回作业步骤、作业计划和作业目标服务器的这些附加结果集。

下面是针对作业步骤的结果集。

列名称 数据类型 说明
step_id int 步骤的唯一(是针对该作业的)标识符。
step_name sysname 步骤的名称。
子系统 nvarchar(40) 执行步骤命令的子系统。
command nvarchar (3200) 执行的命令。
flag nvarchar(4000) 控制步骤行为的值的位掩码
cmdexec_success_code int 对于 CmdExec 步骤,这是成功命令的进程退出代码。
on_success_action nvarchar(4000) 步骤成功时的操作:

1 = 成功退出。

2 = 失败时退出。

3 = 转到下一步。

4 = 转到步骤。
on_success_step_id int 如果 on_success_action4,则表示要执行的下一步。
on_fail_action nvarchar(4000) 步骤失败时所采取的操作。 值与 on_success_action 的值相同。
on_fail_step_id int 如果 on_fail_action4,则表示要执行的下一步。
服务器 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 的成员只能查看他们拥有的作业。 sysadminSQLAgentReaderRoleSQLAgentOperatorRole 的成员可以查看所有本地作业和多服务器作业。

示例

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  

另请参阅

sp_add_job (Transact-SQL)
sp_delete_job (Transact-SQL)
sp_update_job (Transact-SQL)
系统存储过程 (Transact-SQL)