sp_help_jobhistory (Transact-SQL)
为多服务器管理域中的服务器提供有关作业的信息。
语法
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 固定服务器角色的成员才可以执行此存储过程。其他用户必须被授予 msdb 数据库中的下列 SQL Server 代理固定数据库角色的权限之一:
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色。
SQLAgentUserRole 数据库角色的成员只能查看自己拥有的作业的历史记录。
示例
A. 列出指定作业的所有作业信息
以下示例列出了 NightlyBackups 作业的所有作业信息。
USE msdb ;
GO
EXEC dbo.sp_help_jobhistory 
    @job_name = N'NightlyBackups' ;
GO
B. 列出符合某些条件的作业的信息
以下示例针对遇到错误号为 50100(用户定义错误消息)、严重级别为 20 的错误的任何失败作业和失败作业步骤,打印所有列和所有作业的信息。
USE msdb
GO
EXEC dbo.sp_help_jobhistory
    @sql_message_id = 50100,
    @sql_severity = 20,
    @run_status = 0,
    @mode = N'FULL' ;
GO
.gif)