sp_help_jobhistory (Transact-SQL)

適用於:SQL Server

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

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。 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 Agent 固定資料庫角色:

  • 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  

另請參閱

sp_purge_jobhistory (Transact-SQL)
系統預存程序 (Transact-SQL)