sp_help_job (Transact-SQL)

返回有关 SQL Server 代理用来在 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

作业的唯一 ID。

originating_server

nvarchar(30)

作业来自的服务器的名称。

name

sysname

作业的名称。

enabled

tinyint

指示是否启用待执行的作业。

description

nvarchar(512)

对作业的说明。

start_step_id

int

执行作业的起始步骤的 ID。

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,即指明下一步执行步骤 4。

on_fail_action

nvarchar(4000)

步骤失败时所采取的操作。值与 on_success_action 的值相同。

on_fail_step_id

int

如果 on_fail_action4,即指明下一步执行步骤 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

作业步骤的代理。

下面是针对作业计划的结果集。

列名

数据类型

说明

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 代理固定数据库角色的权限之一:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色

SQLAgentUserRole 的成员只可以查看其所拥有的作业。sysadminSQLAgentReaderRoleSQLAgentOperatorRole 的成员可以查看所有本地作业和多服务器作业。

示例

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