我们需要使用SQL Server代理(SQL 2000)来运行日常工作,但是我们不希望它在每个月的22号运行,因为有其他只在当天运行的进程会冲突。
代理中的重复设置不提供任何排除选项,有没有什么办法来实现这一点?
将作业步骤作为工作的第一步,查看DATEPART(dd,getdate())= 22是否发出sp_stopjob来停止作业。
其中一种方法是在脚本中包含一个date检查来运行,而不是在22日运行。
这是唯一的方法吗?
那么,一个选项是类似于你现有的想法。 创build另一个运行脚本来检查date的作业。 如果是第二十二个工作,然后禁用你的日常工作(通过SQL)。 如果不是22日,它可以让你的日常工作。
唯一的好处就是可以让你的日常工作保持任何date逻辑的“纯粹”。
第二个工作在第二个工作:
exec msdb..sp_update_job @job_id = 0xC0923E444828064EA22B46B2C47A1363,@enabled = 0
然后在23日重新启用这项工作:
exec msdb..sp_update_job @job_id = 0xC0923E444828064EA22B46B2C47A1363,@enabled = 1