You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server 2014代理作业执行日志显示未来时间问题求助

排查SQL Server 2014代理作业执行时间异常的思路

我之前帮几个同行排查过类似的SQL Server代理作业时间异常问题,给你梳理几个大概率的原因和对应的排查步骤:

  • 检查作业计划的时区设置:SQL Server代理的作业计划默认可能采用UTC时间存储,如果你在设置计划时不小心选错了时区,就会导致执行时间和预期不符。比如服务器是东八区(UTC+8),若计划设为UTC时区的11点,实际本地时间就是19点(下午7点),和你遇到的下午6:12接近。操作步骤:打开目标作业的计划属性,查看「时区」选项是否和服务器本地时区一致。

  • 验证作业历史记录的真实时间:有时候日志显示的时间可能因为UI转换问题出现偏差,建议直接查询msdb系统数据库的作业历史表,确认实际存储的执行时间。执行以下SQL语句(替换成你的作业名称):

SELECT 
    j.name AS 作业名称,
    h.run_date,
    h.run_time,
    -- 把run_date和run_time转换成可读的本地时间
    CONVERT(DATETIME, RTRIM(h.run_date) + ' ' + 
        STUFF(STUFF(RIGHT('000000' + RTRIM(h.run_time), 6), 3, 0, ':'), 6, 0, ':')) AS 实际执行时间,
    h.message AS 执行备注
FROM msdb.dbo.sysjobs j
JOIN msdb.dbo.sysjobhistory h ON j.job_id = h.job_id
WHERE j.name = '你的目标作业名称'
ORDER BY h.run_date DESC, h.run_time DESC;

查看「执行备注」里是否标注了「手动执行」,如果有的话,说明当天下午6:12是有人手动触发了作业。

  • 检查作业计划的重复执行规则:有可能作业计划被误修改,比如原本设置的「每日11点执行一次」,被改成了「每N小时执行一次」且起始时间设为下午6点,或者计划的生效日期被调整过。重新打开作业计划的属性,确认「频率」设置为「每天」,「每天执行一次」,执行时间为11:00:00,同时检查计划的起始日期是否正确。

  • 排查SQL Server代理服务的时区上下文:虽然服务器时钟正常,但SQL Server代理服务的运行账户可能设置了不同的时区。打开任务管理器,找到「SQLSERVERAGENT」服务,查看其启动账户,然后检查该账户的时区设置是否和服务器系统时区一致(可以通过控制面板的「日期和时间」-「更改时区」查看)。

内容的提问来源于stack exchange,提问作者Mortiz.H

火山引擎 最新活动