Transact-SQL 参考

sp_help_jobhistory

为多服务器管理域中的服务器提供有关作业的信息。

语法

sp_help_jobhistory [ [ @job_id = ] job_id ]
    [ , [ @job_name = ] 'job_name' ]
    [ , [ @step_id = ] step_id ]
    [ , [ @sql_message_id = ] sql_message_id ]
    [ , [ @sql_severity = ] sql_severity ]
    [ , [ @start_run_date = ] start_run_date ]
    [ , [ @end_run_date = ] end_run_date ]
    [ , [ @start_run_time = ] start_run_time ]
    [ , [ @end_run_time = ] end_run_time ]
    [ , [ @minimum_run_duration = ] minimum_run_duration ]
    [ , [ @run_status = ] run_status ]
    [ , [ @minimum_retries = ] minimum_retries ]
    [ , [ @oldest_first = ] oldest_first ]
    [ , [ @server = ] 'server' ]
    [ , [ @mode = ] 'mode' ]

参数

[@job_id =] job_id

作业标识号。job_id 的数据类型为 uniqueidentifier,默认值为 NULL。

[@job_name =] 'job_name'

是作业名称。job_name 的数据类型为 sysname,默认值为 NULL。

[@step_id =] step_id

是步骤标识号。step_id 的数据类型为 int,默认值为 NULL。

[@sql_message_id =] sql_message_id

执行作业时 Microsoft® SQL Server™ 返回的错误信息的标识号。sql_message_id 的数据类型为 int,默认值为 NULL。

[@sql_severity =] sql_severity

是当执行作业时由 SQL Server 返回的错误信息的严重级别。sql_severity 的数据类型为 int,默认值为 NULL。

[@start_run_date =] start_run_date

是作业开始执行的日期。start_run_date 的数据类型为 int,默认值为 NULL。必须以 YYYYMMDD 形式输入 start_run_date,其中 YYYY 表示四个字符的年份,MM 表示两个字符的月份名称,DD 则表示两个字符的日期名称。

[@end_run_date =] end_run_date

是完成作业的日期。end_run_date 的数据类型为 int,默认值为 NULL。必须以 YYYYMMDD 形式输入 end_run_date,其中 YYYY 表示四个字符的年份,MM 表示两个字符的月份名称,DD 则表示两个字符的日期名称。

[@start_run_time =] start_run_time

是作业开始执行的时间。start_run_time 的数据类型为 int,默认值为 NULL。必须以 HHMMSS 形式输入 start_run_time,其中 HH 表示两个字符的天中小时,MM 表示两个字符的天中分钟,SS 则表示两个字符的天中秒。

[@end_run_time =] end_run_time

是作业结束执行的时间。end_run_time 的数据类型为 int,默认值为 NULL。必须以 HHMMSS 形式输入 end_run_time,其中 HH 表示两个字符的天中小时,MM 表示两个字符的天中分钟,SS 则表示两个字符的天中秒。

[@minimum_run_duration =] minimum_run_duration

是完成作业所用的最小时间长度。minimum_run_duration 的数据类型为 int,默认值为 NULL。必须以 HHMMSS 形式输入 minimum_run_duration,其中 HH 表示一天中两个字符的小时,MM 表示两个字符的天中分钟,SS 则表示两个字符的天中秒。

[@run_status =] run_status

是作业的执行状态。run_status 的数据类型为 int,默认值为 NULL,而且可以是下列值之一。

描述
0 失败
1 已成功
2 重试(只针对步骤)
3 已取消
4 进行中的消息
5 未知

[@minimum_retries =] minimum_retries

是作业应该重试运行的最少次数。minimum_retries 的数据类型为 int,默认值为 NULL。

[@oldest_first =] oldest_first

表示是否使用最早的作业最先提交的方式来提交输出结果。oldest_first 的数据类型为 int,默认值为 0,这表示首先提交最晚的作业。而 1 表示首先提交最早的作业。

[@server =] 'server'

是在其上执行作业的服务器名称。server 的数据类型为 nvarchar(30),默认值为 NULL。

[@mode =] 'mode'

表示 SQL Server 是打印结果集中的所有列 (FULL),还是打印列的汇总。mode 的数据类型为 varchar(7),默认值为 SUMMARY

返回代码值

0(成功)或 1(失败)

结果集

实际的列列表依赖于 mode 的值。下面显示了列的最综合的集合,当 mode FULL 时,就会返回这样的集合。

列名 数据类型 描述
instance_id int 历史条目标识号。
job_id uniqueidentifier 作业标识号。
job_name sysname 作业名称。
step_id int 步骤标识号(对于作业历史为 0)。
step_name sysname 步骤名称(对于作业历史为 NULL)。
sql_message_id int 对于 Transact-SQL 步骤,当运行命令时,最近遇到的 Transact-SQL 错误号。
sql_severity int 对于Transact-SQL 步骤,当运行命令时,遇到的最高 Transact-SQL 错误严重度。
message nvarchar(1024) 作业或步骤历史消息。
run_status int 作业或步骤的结果。
run_date int 作业或步骤开始执行的日期。
run_time int 作业或步骤开始执行的时间。
run_duration int 以 HHMMSS 格式表示的作业或步骤的已执行时间。
operator_emailed nvarchar(20) 接收有关该作业的电子邮件的操作员(对于步骤历史为 NULL)。
operator_netsent nvarchar(20) 接收有关该作业的网络消息的操作员(对于步骤历史为 NULL)。
operator_paged nvarchar(20) 接收有关该作业的呼叫的操作员(对于步骤历史为 NULL)。
retries_attempted int 步骤的重试次数(对于作业历史始终为 0)。
server nvarchar(30) 步骤或作业在其上执行的服务器。始终为 (local)。

注释

sp_help_jobhistory 返回一个带有指定的已调度作业的历史记录的报表。如果没有指定参数,那么该报表包含所有已调度作业的历史。

权限

sysadmin 固定服务器角色或 db_owner 固定数据库角色在默认情况下有执行此过程的权限,他们可以将权限授予其他用户。

示例

下面的示例显示了失败的作业以及失败的作业步骤的所有列及所有作业信息,这些失败的作业和失败的作业步骤带有 50100 错误信息(一个用户定义的错误信息),严重度为 20,起始日期为 1998 年 6 月 1 日,在 LONDON2 服务器上。

USE msdb
EXEC sp_help_jobhistory NULL, NULL, NULL, 50100, 20, 19980601, NULL, 
   NULL, NULL, NULL, 0, NULL, 1, 'LONDON2', 'FULL'

请参见

sp_purge_jobhistory

系统存储过程