sp_help_job (Transact-SQL)

傳回 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_aspect =] 'job_aspect'
    這是要顯示的作業屬性。job_aspect 是 varchar(9),預設值是 NULL,它可以是下列值之一。

    描述

    ALL

    作業各方面的資訊

    JOB

    作業資訊

    SCHEDULES

    排程資訊

    STEPS

    作業步驟資訊

    TARGETS

    目標資訊

  • [@job_type =] 'job_type'
    這是要併入報表中的作業類型。job_type 是 varchar(12),預設值是 NULL。job_type 可以是 LOCALMULTI-SERVER

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

  • [@subsystem =] '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

作業的名稱。

enabled

tinyint

指出是否啟用作業,以便執行。

description

nvarchar(512)

作業的描述。

start_step_id

int

應該作為執行起點的作業步驟識別碼。

category

sysname

作業類別目錄。

owner

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

目前的執行狀態。

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_action4,這就表示要執行的下一個步驟。

on_fail_action

nvarchar(4000)

步驟失敗時所採取的動作。其值如同 on_success_action 的值。

on_fail_step_id

int

如果 on_fail_action4,這就表示要執行的下一個步驟。

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 = 在 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 的成員只能檢視他們自己的作業。系統管理員 (sysadmin)SQLAgentReaderRoleSQLAgentOperatorRole 的成員可以檢視所有本機作業和多伺服器作業。

範例

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