我正在寻找一种简单的方法来更新从 Ola 的 MaintenanceSolution.sql 脚本创建的作业,而不必完全删除并重新创建它们,也不必通过进入作业的属性然后进入步骤并修改来单独修改每个作业命令。
具体来说,我正在尝试更新@CleanupTime
参数,该参数用于告诉作业何时删除旧备份。根据他的FAQ,每当他的脚本的新版本可用并且你想更新到那个新版本时,你只需要下载 MaintenanceSolution.sql 脚本并再次运行它,@CreateJobs = 'N'
如果你不这样做,可以选择指定 SET想创造就业机会。这告诉我,如果你离开@CreateJobs = 'Y'
,它会重新创造就业机会,但事实似乎并非如此。
例如,如果“DatabaseBackup - USER_DATABASES - FULL”作业已经存在,步骤中的命令显示@CleanupTime = 48
,然后我重新运行 MaintenanceSolution.sql 脚本@CleanupTime = 168
,然后返回作业的步骤,它仍然显示@CleanupTime = 48
。
您可以更新步骤,而无需完全重新创建所有内容,也无需在 UI 中指向并单击自己。您可以直接针对 msdb.dbo.sysjobsteps 编写手动查询(从发出 REPLACE() 调用的 SELECT 开始,然后当您满意时,将其更改为 UPDATE)。
当您对它的正确性感到满意时,只有前几行会发生变化:
很难获得比这更高的自动化程度(例如,一次更新多个作业),因为您要替换的字符串在所有作业步骤中可能并不完全相同,而且您也可能得到误报。