如何创建主 SQL Server 代理作业 (Transact-SQL)
更新日期: 2005 年 12 月 5 日
本主题介绍了如何使用存储过程创建主 Microsoft SQL Server 代理作业。
有关用于 SQL Server Agent 服务的 Windows 帐户如何影响多服务器环境的信息,请参阅创建多服务器环境。
创建主 SQL Server 代理作业
执行 sp_add_job 来创建作业。
执行 sp_add_jobstep 来创建一个或多个作业步骤。
执行 sp_add_schedule 来创建计划。
执行 sp_attach_schedule 将计划附加到作业。
执行 sp_add_jobserver 来指定运行该作业的目标服务器。
对主 SQL Server 代理作业所做更改必须传播到所有涉及的目标服务器。由于在调用 sp_add_jobserver 后,目标服务器才开始下载作业,因此 Microsoft 建议在执行 sp_add_jobserver 之前,完成特定作业的所有作业步骤和作业计划。否则,必须随后调用 sp_post_msx_operation 以请求目标服务器重新下载已修改的作业。
安全性
如果分布式作业的步骤与某个代理相关联,则该作业将在目标服务器上该代理帐户的上下文下运行。请确保满足以下条件,否则与代理关联的作业步骤将不会从主服务器下载到目标服务器上:
- 注册表子项 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<实例名>\SQL Server Agent\AllowDownloadedJobsToMatchProxyName (REG_DWORD) 设为 1 (True)。默认情况下,此子项设置为 0 (False)。
- 目标服务器上已存在与运行作业步骤的主服务器代理帐户同名的代理帐户。
从主服务器将使用代理帐户的作业步骤下载到目标服务器时,如果作业步骤失败,可以检查 msdb 数据库中 sysdownloadlist 表的 error_message 列是否存在以下错误消息:
- “该作业步骤需要代理帐户,但是目标服务器上禁用了代理匹配功能。”
若要解决此错误,请将 AllowDownloadedJobsToMatchProxyName 注册表子项设置为 1。 - “找不到代理。”
若要解决此错误,请确保目标服务器上已存在与运行作业步骤的主服务器代理帐户同名的代理帐户。
请参阅
其他资源
系统存储过程 (Transact-SQL)
sp_add_job (Transact-SQL)
sp_add_jobstep (Transact-SQL)
sp_add_schedule (Transact-SQL)
sp_attach_schedule (Transact-SQL)
sp_add_jobserver (Transact-SQL)
sp_post_msx_operation (Transact-SQL)
sp_msx_get_account (Transact-SQL)
sp_msx_set_account (Transact-SQL)