sp_add_jobserver (Transact-SQL)

适用于SQL Server

在指定的服务器中,以指定的作业为目标。

Transact-SQL 语法约定

语法

sp_add_jobserver
    [ @job_id = ] job_id
        | [ @job_name = ] 'job_name'
    [ , [ @server_name = ] 'server' ]
[ ; ]

参数

[ @job_id = ] job_id

作业的标识号。 job_iduniqueidentifier,默认值为 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 为管理作业提供了一种图形化的简便方法,建议使用此方法来创建和管理作业基础结构。

权限

此存储过程由 db_owner 角色拥有。 你可以为任何用户授予 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