分享方式:


sp_help_jobhistory (Transact-SQL)

適用於:SQL Server

提供多伺服器管理網域中伺服器作業的相關信息。

Transact-SQL 語法慣例

語法

sp_help_jobhistory
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'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 = ] N'server' ]
    [ , [ @mode = ] 'mode' ]
[ ; ]

引數

[ @job_id = ] 'job_id'

作業標識碼。 @job_id為 uniqueidentifier,預設值為 NULL

[ @job_name = ] N'job_name'

作業的名稱。 @job_name為 sysname,預設值為 NULL

[ @step_id = ] step_id

步驟標識碼。 @step_id為 int,預設值為 NULL

[ @sql_message_id = ] sql_message_id

執行作業時,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 是一天中的兩個字元小時,是一天的兩個字元分鐘,mmss 是一天中的兩個字元秒。

[ @end_run_time = ] end_run_time

作業完成執行的時間。 @end_run_time為 int,預設值為 NULL@end_run_time必須以 格式HHmmss輸入,其中 HH 是一天的兩個字元小時,是一天的兩個字元分鐘,mmss 是一天中的兩個字元秒。

[ @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,而且可以是下列其中一個值。

Description
0 失敗
1 已成功
2 重試 (僅限步驟)
3 已取消
4 進行中訊息
5 Unknown

[ @minimum_retries = ] minimum_retries

作業應該重試執行的次數下限。 @minimum_retries為 int,預設值為 NULL

[ @oldest_first = ] oldest_first

是否要先以最舊的作業呈現輸出。 @oldest_first為 int,預設值為 0

  • 0 先提供最新的作業。
  • 1 先提供最舊的工作。

[ @server = ] N'server'

執行作業的伺服器名稱。 @server為 sysname,預設值為 NULL

[ @mode = ] 'mode'

指定 SQL Server 是否列印結果集 (FULL) 或資料行的摘要 (SUMMARY) 中的所有資料行。 @mode為 varchar(7),預設值為 SUMMARY

傳回碼值

0 (成功) 或 1 (失敗)。

結果集

實際數據行清單取決於@mode的值。 下表顯示最完整的數據行集,並在 @modeFULL傳回。

資料行名稱 資料類型 描述
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 會傳回具有指定排程工作歷程記錄的報表。 如果未指定任何參數,報表會包含所有排程作業的歷程記錄。

權限

此預存程式是由 db_owner 角色所擁有。 您可以授與 EXECUTE 任何用戶的許可權,但這些許可權可能會在 SQL Server 升級期間覆寫。

其他用戶必須在資料庫中獲得下列其中一個 SQL Server Agent 固定資料庫角色 msdb

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

如需這些角色權限的詳細資訊,請參閱 SQL Server Agent 固定資料庫角色

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