sp_add_jobserver (Transact-SQL)
适用范围:SQL Server
在指定的服务器中,以指定的作业为目标。
语法
sp_add_jobserver
[ @job_id = ] job_id
| [ @job_name = ] 'job_name'
[ , [ @server_name = ] 'server' ]
[ ; ]
参数
[ @job_id = ] job_id
作业的标识号。 job_id 为 uniqueidentifier,默认值为 NULL
.
必须指定@job_id或@job_name,但不能指定这两者。
[ @job_name = ] 'job_name'
作业的名称。 job_name为 sysname,默认值为 NULL
.
必须指定@job_id或@job_name,但不能指定这两者。
[ @server_name = ] N'server'
该作业的目标服务器的名称。 @server_name为 nvarchar(30),默认值为 (LOCAL)
. @server_name 可以是本地服务器,也可以是 (LOCAL)
现有目标服务器的名称。
返回代码值
0
(成功)或 1
(失败)。
结果集
无。
注解
@automatic_post存在于sp_add_jobserver
参数下,但未在参数下列出。 @automatic_post保留供内部使用。
SQL Server Management Studio 为管理作业提供了一种图形化的简便方法,建议使用此方法来创建和管理作业基础结构。
权限
可以授予 EXECUTE
此过程的权限,但在 SQL Server 升级期间可能会重写这些权限。
其他用户必须被授予数据库中以下SQL Server 代理固定数据库角色msdb
之一:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
有关这些角色的权限的详细信息,请参阅 SQL Server 代理固定数据库角色。
只有 sysadmin 固定服务器角色的成员才能针对涉及多个服务器的作业执行sp_add_jobserver
。
示例
A. 将作业分配给本地服务器
以下示例将要运行的作业 NightlyBackups
指派给本地服务器。
注意
此示例假定 NightlyBackups
作业已存在。
USE msdb;
GO
EXEC dbo.sp_add_jobserver @job_name = N'NightlyBackups';
GO
B. 分配作业以在不同的服务器上运行
以下示例将多服务器作业 Weekly Sales Backups
指派给服务器 SEATTLE2
。
注意
本示例假定 Weekly Sales Backups
作业已经存在,且 SEATTLE2
已注册为当前实例的目标服务器。
USE msdb;
GO
EXEC dbo.sp_add_jobserver @job_name = N'Weekly Sales Backups',
@server_name = N'SEATTLE2';
GO