sp_help_jobhistory (Transact-SQL)
适用于:SQL Server
为多服务器管理域中的服务器提供有关作业的信息。
语法
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。 start_run_date必须以格式yyyyMMdd
输入,其中 YYYY 是四个字符年份,MM 是两个字符的月份名称,DD 是两个字符的日名称。
[ @end_run_date = ] end_run_date
作业完成的日期。 end_run_date 为 int,默认值为 NULL。 end_run_date必须以格式yyyyMMdd
输入,其中 YYYY 是四位数年份,MM 是两个字符的月份名称,DD 是两个字符的日名称。
[ @start_run_time = ] start_run_time
作业启动时间。 start_run_time为 int,默认值为 NULL。 start_run_time必须以形式 HHmmss
输入,其中 HH 是一天的两个字符小时,MM 是当天的两个字符分钟,SS 是当天的两个字符秒。
[ @end_run_time = ] end_run_time
作业完成执行的时间。 end_run_time 为 int,默认值为 NULL。 end_run_time必须以形式HHmmss
输入,其中 HH 是一天的两个字符小时,MM 是当天的两个字符分钟,SS 是当天的两个字符秒。
[ @minimum_run_duration = ] minimum_run_duration
完成作业的最短时间长度。 minimum_run_duration为 int,默认值为 NULL。 minimum_run_duration必须以形式 HHmmss
输入,其中 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'
在其中执行作业的服务器的名称。 服务器 为 nvarchar(30),默认值为 NULL。
[ @mode = ] 'mode'
SQL Server 是打印结果集中的所有列(FULL)还是列的摘要。 模式 为 varchar(7),默认值为 SUMMARY。
返回代码值
0 (成功) 或 1 (失败)
结果集
实际列列表取决于模式的值。 下面显示了最全面的列集,当模式为 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)。 |
服务器 | nvarchar(30) | 执行步骤或作业的服务器。 始终为(本地)。 |
注解
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
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈