SQL Server 代理作业 - 除每月 1 天外每天安排

SQL Server 代理作业 - 除每月 1 天外每天安排

我们需要使用 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

相关内容