sp_help_job (Transact-SQL)

適用於:SQL Server

傳回 SQL Server Agent 用來在 SQL Server 中執行自動化活動之作業的相關資訊。

Transact-SQL 語法慣例

語法

  
sp_help_job { [ @job_id = ] job_id  
[ @job_name = ] 'job_name' }   
     [ , [ @job_aspect = ] 'job_aspect' ]   
     [ , [ @job_type = ] 'job_type' ]   
     [ , [ @owner_login_name = ] 'login_name' ]   
     [ , [ @subsystem = ] 'subsystem' ]   
     [ , [ @category_name = ] 'category' ]   
     [ , [ @enabled = ] enabled ]   
     [ , [ @execution_status = ] status ]   
     [ , [ @date_comparator = ] 'date_comparison' ]   
     [ , [ @date_created = ] date_created ]   
     [ , [ @date_last_modified = ] date_modified ]   
     [ , [ @description = ] 'description_pattern' ]  

引數

[ @job_id = ] job_id 作業識別碼。 job_id uniqueidentifier ,預設值為 Null。

[ @job_name = ] 'job_name' 作業的名稱。 job_name為 sysname ,預設值為 Null。

注意

若要檢視特定作業, 必須指定job_id job_name 。 請省略 job_id job_name ,以傳回所有作業的相關資訊。

[ @job_aspect = ] 'job_aspect' 要顯示的作業屬性。 job_aspect 為 Varchar(9) ,預設值為 Null,而且可以是下列其中一個值。

Description
ALL 作業層面資訊
工作 作業資訊
附表 排程資訊
步驟 作業步驟資訊
目標 目標資訊

[ @job_type = ] 'job_type' 要包含在報表中的作業類型。 job_type 為 Varchar(12) ,預設值為 Null。 job_type 可以是 LOCAL MULTI-SERVER

[ @owner_login_name = ] 'login_name' 作業擁有者的登入名稱。 login_name為 sysname ,預設值為 Null。

[ @subsystem = ] 'subsystem' 子系統的名稱。 子系統 Nvarchar(40) ,預設值為 Null。

[ @category_name = ] 'category' 類別的名稱。 category sysname ,預設值為 Null。

[ @enabled = ] enabled 數位,指出已啟用的工作或已停用的作業是否顯示資訊。 enabled Tinyint ,預設值為 Null。 1 表示已啟用的工作, 0 表示已停用的工作。

[ @execution_status = ] status 作業的執行狀態。 status int ,預設值為 Null,而且可以是下列其中一個值。

描述
0 只傳回那些未閒置或暫停的工作。
1 執行。
2 等候執行緒。
3 重試之間。
4 閒置。
5 暫停。
7 執行完成動作。

[ @date_comparator = ] 'date_comparison'要用於比較date_created date_modified 比較運算子。 date_comparison是 char(1) ,而且可以是 =、 < 、 或 > 。

[ @date_created = ] date_created 建立作業的日期。 date_created 為 datetime ,預設值為 Null。

[ @date_last_modified = ] date_modified 上次修改作業的日期。 date_modified 為 datetime ,預設值為 Null。

[ @description = ] 'description_pattern' 作業的描述。 description_pattern為 Nvarchar(512), 預設值為 Null。 description_pattern 可以包含用於模式比對的 SQL Server 萬用字元。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

如果未指定任何引數, sp_help_job 會傳回此結果集。

資料行名稱 資料類型 描述
job_id uniqueidentifier 作業的唯一識別碼。
originating_server nvarchar(30) 作業的來源伺服器名稱。
name sysname 作業的名稱。
「已啟用」 tinyint 指出是否啟用作業執行。
description nvarchar(512) 作業的描述。
start_step_id int 作業中應該開始執行之步驟的識別碼。
category sysname 作業類別目錄。
擁有者 sysname 作業擁有者。
notify_level_eventlog int 位元遮罩 ,指出在何種情況下,通知事件應該記錄至 Microsoft Windows 應用程式記錄檔。 可以是下列值之一:

0 = 永不

1 = 作業成功時

2 = 作業失敗時

3 = 每當作業完成時 (不論作業結果為何)
notify_level_email int 位元遮罩 ,指出當作業完成時,應該傳送通知電子郵件。 可能的值與 notify_level_eventlog 相同。
notify_level_netsend int 位元遮罩 ,指出在哪些情況下,當作業完成時,應該傳送網路訊息。 可能的值與 notify_level_eventlog 相同。
notify_level_page int 位元遮罩 ,指出當作業完成時,應該傳送頁面。 可能的值與 notify_level_eventlog 相同。
notify_email_operator sysname 要通知之操作員的電子郵件名稱。
notify_netsend_operator sysname 傳送網路訊息時所使用的電腦或使用者名稱。
notify_page_operator sysname 傳送頁面時所使用的電腦或使用者名稱。
delete_level int 位元遮罩 ,指出作業完成時應刪除作業的情況。 可能的值與 notify_level_eventlog 相同。
date_created datetime 建立作業的日期。
date_modified datetime 上次修改作業的日期。
version_number int 作業的版本 (每次修改作業時,都會自動更新)。
last_run_date int 上次開始執行的作業日期。
last_run_time int 作業上次開始執行的時間。
last_run_outcome int 上次執行作業的結果:

0 = 失敗

1 = 成功

3 = 已取消

5 = 未知
next_run_date int 作業排程為下一步執行的日期。
next_run_time int 作業排定下次執行的時間。
next_run_schedule_id int 下一個執行排程的識別碼。
current_execution_status int 目前的執行狀態:

1 = 執行

2 = 等候執行緒

3 = 重試之間

4 = 閒置

5 = 已暫停

6 = 過時

7 = 執行CompletionActions
current_execution_step sysname 作業中的目前執行步驟。
current_retry_attempt int 如果作業正在執行且步驟已重試,這是目前的重試嘗試。
has_step int 作業擁有的作業步驟數目。
has_schedule int 作業擁有的作業排程數目。
has_target int 作業擁有的目標伺服器數目。
type int 作業的類型。

1 = 本機作業。

2 = 多伺服器作業。

0 = 作業沒有目標伺服器。

如果 指定了job_id job_name sp_help_job 會針對作業步驟、作業排程和作業目標伺服器傳回這些額外的結果集。

這是作業步驟的結果集。

資料行名稱 資料類型 描述
step_id int 步驟的唯一 (針對這項作業) 識別碼。
step_name sysname 步驟的名稱。
子系統 nvarchar(40) 用來執行步驟命令的子系統。
命令 Nvarchar(3200) 要執行的命令。
flags nvarchar(4000) 控制步驟行為的值的位元遮罩
cmdexec_success_code int 針對 CmdExec 步驟,這是成功命令的進程結束代碼。
on_success_action nvarchar(4000) 如果步驟成功,該怎麼辦:

1 = 成功結束。

2 = 失敗結束。

3 = 移至下一個步驟。

4 = 移至步驟。
on_success_step_id int 如果 on_success_action 4 ,這表示下一個步驟要執行。
on_fail_action nvarchar(4000) 如果步驟失敗,則採取動作。 值與 on_success_action 相同。
on_fail_step_id int 如果 on_fail_action 4 ,這表示要執行的下一個步驟。
伺服器 sysname 保留。
database_name sysname 針對 Transact-SQL 步驟,這是命令將執行的資料庫。
database_user_name sysname 針對 Transact-SQL 步驟,這是命令執行所在的資料庫使用者內容。
retry_attempts int 在步驟被視為失敗之前,應該重試命令的次數上限(如果失敗的話)。
retry_interval int 任何重試嘗試之間的間隔 (以分鐘為單位)。
os_run_priority Varchar(4000) 保留。
output_file_name Varchar(200) 應該寫入命令輸出的檔案(僅限 Transact-SQL 和 CmdExec 步驟)。
last_run_outcome int 上次執行步驟的結果:

0 = 失敗

1 = 成功

3 = 已取消

5 = 未知
last_run_duration int 最後一次執行步驟的持續時間(以秒為單位)。
last_run_retries int 上次執行步驟時,命令重試的次數。
last_run_date int 上次開始執行步驟的日期。
last_run_time int 上次開始執行步驟的時間。
proxy_id int 作業步驟的 Proxy。

這是作業排程的結果集。

資料行名稱 資料類型 描述
schedule_id int 排程的識別碼(在所有作業中是唯一的)。
schedule_name sysname 排程的名稱(僅適用于此作業的唯一名稱)。
「已啟用」 int 排程是否為使用中 ( 1 ) ( 0 )。
freq_type int 值,指出作業何時要執行:

1 = 一次

4 = 每日

8 = 每週

16 = 每月

32 = 每月,相對於 freq_interval

64 = 在 SQLServerAgent 服務啟動時執行。
freq_interval int 執行作業的天數。 值取決於 freq_type 的值 。 如需詳細資訊,請參閱 sp_add_schedule (Transact-SQL)
freq_subday_type Int freq_subday_interval 單位。 如需詳細資訊,請參閱 sp_add_schedule (Transact-SQL)
freq_subday_interval int 每個作業執行之間要發生的freq_subday_type 期間數。 如需詳細資訊,請參閱 sp_add_schedule (Transact-SQL)
freq_relative_interval int 排程作業 在每個月出現freq_interval 。 如需詳細資訊,請參閱 sp_add_schedule (Transact-SQL)
freq_recurrence_factor int 排程執行作業之間的月數。
active_start_date int 開始執行作業的日期。
active_end_date int 結束作業執行的日期。
active_start_time int 開始在active_start_date上 執行作業的時間。
active_end_time int 在 active_end_date 結束作業執行的時間。
date_created datetime 建立排程的日期。
schedule_description nvarchar(4000) 排程的英文描述(如有要求)。
next_run_date int 排程的下一個日期會導致作業執行。
next_run_time int 排程下一次會導致作業執行的時間。
schedule_uid uniqueidentifier 排程的識別碼。
job_count int 傳回參考此排程的作業數目。

這是作業目標伺服器的結果集。

資料行名稱 資料類型 描述
server_id int 目標伺服器的識別碼。
server_name nvarchar(30) 目標伺服器的電腦名稱稱。
enlist_date datetime 將目標伺服器登記到主伺服器日期。
last_poll_date datetime 目標伺服器上次輪詢主伺服器的日期。
last_run_date int 上次在此目標伺服器上開始執行作業的日期。
last_run_time int 作業上次在此目標伺服器上開始執行的時間。
last_run_duration int 上次在此目標伺服器上執行作業的持續時間。
last_run_outcome tinyint 上次在此伺服器上執行作業的結果:

0 = 失敗

1 = 成功

3 = 已取消

5 = 未知
last_outcome_message nvarchar(1024) 上次在此目標伺服器上執行作業的結果訊息。

權限

依預設,只有 系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠執行這個預存程序。 其他使用者必須獲授與 msdb 資料庫的下列其中一個 SQL Server Agent 固定資料庫角色:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

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

SQLAgentUserRole 的成員 只能檢視他們所擁有的作業。 系統管理員 SQLAgentReaderRole 和 SQLAgentOperatorRole 的成員可以檢視所有本機和多伺服器作業。

範例

A. 列出所有作業的資訊

下列範例會 sp_help_job 執行沒有參數的程式,以傳回資料庫中目前定義 msdb 之所有作業的資訊。

USE msdb ;  
GO  
  
EXEC dbo.sp_help_job ;  
GO  

B. 列出符合特定準則之作業的資訊

下列範例會列出已啟用和執行作業之多伺服器作業 françoisa 的作業資訊。

USE msdb ;  
GO  
  
EXEC dbo.sp_help_job   
   @job_type = N'MULTI-SERVER',  
   @owner_login_name = N'françoisa',  
   @enabled = 1,  
   @execution_status = 1 ;  
GO  

C. 列出作業資訊的所有層面

下列範例會列出作業 NightlyBackups 資訊的所有層面。

USE msdb ;  
GO  
  
EXEC dbo.sp_help_job  
    @job_name = N'NightlyBackups',  
    @job_aspect = N'ALL' ;  
GO  

另請參閱

sp_add_job (Transact-SQL)
sp_delete_job (Transact-SQL)
sp_update_job (Transact-SQL)
系統預存程序 (Transact-SQL)