我们需要使用 SQL Server Agent(SQL 2000)运行一项日常作业,但我们不希望它在每月 22 日运行,因为其他进程仅在当天运行,从而会发生冲突。
Agent 中的重复设置没有提供任何排除选项,有什么办法可以实现吗?
答案1
将作业步骤作为作业的第一步,查看 DATEPART(dd, getdate()) 是否为 22,如果是,则发出 sp_stopjob 来停止作业。
答案2
一种方法是在要运行的脚本中包含日期检查,而不是在 22 日运行它。
但这是唯一的方法吗?
答案3
嗯,有一种选择与您现有的想法类似。创建另一个运行脚本来检查日期的作业。如果是 22 号,则该作业将禁用您的日常作业(通过 SQL)。如果不是 22 号,则启用您的日常作业。
与您的建议相比,这可能具有的唯一优势是,它使您的日常工作“纯粹”不受任何日期逻辑的影响。
答案4
我if
对整个过程进行了总结
if RIGHT( convert(varchar(11),CURRENT_TIMESTAMP,120),2) = 22 do something else end