如何批量修改所有sql server代理作业中的作业步骤命令

HAd*_*des 6 sql sql-server sql-server-agent sql-server-2005

我有很多工作,可以将1个特定的电子邮件发送到人员列表.这个rec​​iepients列表在step命令中是硬编码的,我需要在所有作业中从该列表中删除一个人.

如何遍历Sql Server Agent中的所有作业并修改命令文本以查找+替换特定的文本.

我正在使用sql server 2005并且已经查看了sp_update_jobStep,但似乎并不是我想要的.

干杯.

Tim*_*m C 7

您可以尝试直接更新包含SQL服务器作业信息的系统表.对你来说相关的是:

msdb.dbo.SysJobs
msdb.dbo.SysJobSteps
Run Code Online (Sandbox Code Playgroud)

如果要删除特定的电子邮件地址,则可以使用单个UPDATE语句更新SysJobSteps表中的" 命令"字段.

UPDATE SJS SET
    Command = REPLACE(Command, 'EmailAddress&TestDomain.Com', '')
FROM msdb.dbo.SysJobs SJ
INNER JOIN msdb.dbo.SysJobSteps SJS
    ON SJS.Job_Id = SJ.Job_Id
WHERE SJ.Originating_server = ..... -- Your server here
    AND SJS.Command LIKE '%EmailAddress@TestDomain.Com%'
Run Code Online (Sandbox Code Playgroud)

建议首先将上述查询作为SELECT语句运行,以测试它只返回您期望更新的作业步骤.