共用方式為


sp_help_jobhistory (Transact-SQL)

提供多伺服器管理網域中之伺服器的作業相關資訊。

主題連結圖示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'
    執行作業的伺服器名稱。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 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