sp_help_job (Transact-SQL)
適用於:SQL Server
傳回 SQL Server Agent 用來在 SQL Server 中執行自動化活動之作業的相關信息。
語法
sp_help_job
[ [ @job_id = ] 'job_id' ]
[ , [ @job_name = ] N'job_name' ]
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] N'owner_login_name' ]
[ , [ @subsystem = ] N'subsystem' ]
[ , [ @category_name = ] N'category_name' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] execution_status ]
[ , [ @date_comparator = ] 'date_comparator' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_last_modified ]
[ , [ @description = ] N'description' ]
[ ; ]
引數
[ @job_id = ] 'job_id'
作業標識碼。 @job_id為 uniqueidentifier,預設值為 NULL
。
若要檢視特定作業, 必須指定@job_id 或 @job_name 。 請省略 @job_id 和 @job_name ,以傳回所有作業的相關信息。
[ @job_name = ] N'job_name'
作業的名稱。 @job_name為 sysname,預設值為 NULL
。
若要檢視特定作業, 必須指定@job_id 或 @job_name 。 請省略 @job_id 和 @job_name ,以傳回所有作業的相關信息。
[ @job_aspect = ] 'job_aspect'
要顯示的作業屬性。 @job_aspect為 varchar(9),而且可以是下列其中一個值。
值 | Description |
---|---|
ALL |
作業層面資訊 |
JOB |
作業資訊 |
SCHEDULES |
排程資訊 |
STEPS |
作業步驟資訊 |
TARGETS |
目標資訊 |
[ @job_type = ] 'job_type'
要包含在報表中的作業類型。@job_type為 varchar(12),預設值為 NULL
。 @job_type可以是 LOCAL
或 MULTI-SERVER
。
[ @owner_login_name = ] N'owner_login_name'
作業擁有者的登入名稱。 @owner_login_name為 sysname,預設值為 NULL
。
[ @subsystem = ] N'subsystem'
子系統的名稱。 @subsystem為 nvarchar(40),預設值為 NULL
。
[ @category_name = ] N'category_name'
分類的名稱。 @category_name為 sysname,預設值為 NULL
。
[ @enabled = ] enabled
數位,指出已啟用的工作或已停用的作業是否顯示資訊。 @enabled為 tinyint,預設值為 NULL
。
1
表示已啟用的工作。0
表示已停用的工作。
[ @execution_status = ] execution_status
作業的執行狀態。 @execution_status為 int,而且可以是下列其中一個值。
值 | Description |
---|---|
0 |
只傳回那些未閑置或暫停的工作。 |
1 |
執行。 |
2 |
等候線程。 |
3 |
重試之間。 |
4 |
怠。 |
5 |
暫停。 |
7 |
執行完成動作。 |
[ @date_comparator = ] 'date_comparator'
要用於@date_created和@date_last_modified比較的比較運算符。 @date_comparator為 char(1),而且可以是 =
、 <
或 >
。
[ @date_created = ] date_created
建立作業的日期。 @date_created為 datetime,預設值為 NULL
。
[ @date_last_modified = ] date_last_modified
上次修改作業的日期。 @date_last_modified為 datetime,預設值為 NULL
。
[ @description = ] N'description'
這是作業的描述。 @description為 nvarchar(512),預設值為 NULL
。 @description可以包含模式比對的通配符。
傳回碼值
0
(成功) 或 1
(失敗)。
結果集
如果未指定任何自變數, sp_help_job
則傳回此結果集。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
job_id |
uniqueidentifier | 作業的唯一識別碼。 |
originating_server |
nvarchar(30) | 作業的來源伺服器名稱。 |
name |
sysname | 作業的名稱。 |
enabled |
tinyint | 指出作業是否已啟用,以便執行作業。 |
description |
nvarchar(512) | 作業的描述。 |
start_step_id |
int | 作業中應該開始執行之步驟的標識碼。 |
category |
sysname | 作業類別目錄。 |
owner |
sysname | 作業擁有者。 |
notify_level_eventlog |
int | 位掩碼,指出通知事件應該記錄到 windows 應用程式記錄檔Microsoft的情況。 可以是下列值之一: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 = Suspended6 = 過時7 = PerformingCompletionActions |
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 | 步驟的名稱。 |
subsystem |
nvarchar(40) | 用來執行步驟命令的子系統。 |
command |
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 ,則表示要執行的下一個步驟。 |
server |
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 | 排程的名稱(僅適用於此作業的唯一名稱)。 |
enabled |
int | 排程是否為作用中 (1 ) 或否 。0 。 |
freq_type |
int | 值,指出作業何時要執行:1 = 一次4 = 每日8 = 每周16 = 每月32 = 每月,相對於 freq_interval 64 = 在 SQL Server Agent 服務啟動時執行。 |
freq_interval |
int | 執行作業的天數。 值取決於的值 freq_type 。 如需詳細資訊,請參閱 sp_add_schedule |
freq_subday_type |
int | 的 freq_subday_interval 單位。 如需詳細資訊,請參閱 sp_add_schedule |
freq_subday_interval |
int | freq_subday_type 每個作業執行之間要發生的期間數。 如需詳細資訊,請參閱 sp_add_schedule |
freq_relative_interval |
int | 排程工作在每個月出現的 freq_interval 。 如需詳細資訊,請參閱 sp_add_schedule |
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) | 上次在此目標伺服器上執行作業的結果訊息。 |
權限
您可以授與此 EXECUTE
程序的許可權,但這些許可權可能會在 SQL Server 升級期間覆寫。
其他用戶必須在資料庫中獲得下列其中一個 SQL Server Agent 固定資料庫角色 msdb
:
- 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