Sqlserver:代理作业调度的时间不准确.作业停止问题
现象:sqlserver的代理作业,经常会因为os时间的调整(后调、前调)而导致作业不能正常调度执行!
根源:sqlserver作业调度计划的执行必须符合以下原则
- 时间不可以往后调,如 getdate()- n。调整后的时间早于计划调度的“下次运行时间”了,作业不会运行
- 时间不可以往前调一个“主发生频率周期(每天、每周、每月)”,前调若干“次发生频率周期(如主发生频率为每天,次发生频率为分钟 或 小时”则可以。
解决:
- 重建该作业的调度计划
- 禁用作业的调度,再启用该调度
相关信息
msdb.dbo.sysjobschedules 计划调度表
列名 | 数据类型 | 描述 | 说明 |
---|---|---|---|
schedule_id | int | 调度 ID。 | |
job_id | uniqueidentifier | 作业 ID。 | |
name | sysname | 调度的名称。 | |
enabled | int | 调度的启用状态。 | |
freq_type | int | 调度执行的频率:
1 = 一次 |
|
freq_interval | int | 表示调度运行日期的值。
如果 freq_type 是 4(每天),则该值是每隔 freq_interval 天。 如果 freq_type 是 8(每周),则该值是表示周调度运行日期的位掩码。freq_interval 值是: 1 = 星期日 如果 freq_type 是 16(每月),则该值是月中的 freq_interval 天。 如果 freq_type 是 32(每月相对信息),则 freq_interval 可以是下列值之一: 1 = 星期日 |
|
freq_subday_type | int | freq_subday_interval 的单位:
1 = 以指定的时间 |
|
freq_subday_interval | int | 在每个已调度作业执行之间发生的 freq_subday_type 周期数。 | |
freq_relative_ interval |
int | 当 freq_type 是 32(每月相对信息)时,每月已调度作业的 freq_interval 发生: 1 = 第一个 2 = 第二个 4 = 第三个 8 = 第四个 16 = 最后一个 |
|
freq_recurrence_ factor |
int | 在已调度作业执行之间的星期数或月份数。 | |
active_start_date | int | 开始执行作业的日期。 | |
active_end_date | int | 停止执行作业的日期。 | |
active_start_time | int | 开始执行作业的时间。 | |
active_end_time | int | 停止执行作业的时间。 | |
next_run_date | int | 下一次执行作业的日期。 | |
next_run_time | int | 下一次执行作业的时间。 | |
date_created | datetime | 已调度作业项的创建日期。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)