sp_help_jobhistory (Transact-SQL)
適用於:SQL Server
提供多伺服器管理網域中伺服器作業的相關信息。
語法
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
是一天中的兩個字元小時,是一天的兩個字元分鐘,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,而且可以是下列其中一個值。
值 | 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的值。 下表顯示最完整的數據行集,並在 @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
會傳回具有指定排程工作歷程記錄的報表。 如果未指定任何參數,報表會包含所有排程作業的歷程記錄。
權限
此預存程式是由 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