sp_help_job (Transact-SQL)
適用於:SQL Server
傳回 SQL Server Agent 用來在 SQL Server 中執行自動化活動之作業的相關資訊。
語法
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)
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: