sp_help_job (Transact-SQL)
适用于:SQL Server
返回有关SQL Server 代理用于在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,可以是其中一个值。
值 | 说明 |
---|---|
ALL | 作业特征信息 |
JOB | 作业信息 |
附表 | 计划信息 |
步骤 | 作业步骤信息 |
目标 | 目标信息 |
[ @job_type = ] 'job_type'
要包含在报表中的作业类型。 job_type 为 varchar (12) ,默认值为 NULL。 job_type 可以是 本地 或 多服务器。
[ @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 | 作业的唯一 ID。 |
originating_server | nvarchar(30) | 作业来自的服务器的名称。 |
name | sysname | 作业的名称。 |
enabled | tinyint | 指示是否启用要执行的作业。 |
description | nvarchar(512) | 对作业的说明。 |
start_step_id | int | 执行作业的起始步骤的 ID。 |
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) | 执行步骤命令的子系统。 |
command | nvarchar (3200) | 执行的命令。 |
flag | 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 | 作业步骤的代理。 |
下面是针对作业计划的结果集。
列名称 | 数据类型 | 说明 |
---|---|---|
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 的成员只能查看他们拥有的作业。 sysadmin、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 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈