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。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