You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中Linux版SQL Server Standard的Agent无法触发定时调度任务

Linux Docker 环境 SQL Server Agent 调度不触发排查修复步骤
  • 优先排查时区不匹配问题
    这是容器环境部署最常见的触发失败原因:默认SQL Server容器使用UTC时区,你配置的调度规则按照本地时间设置,和容器内部时间存在时差导致调度不会按时触发。
    验证方法:进入容器执行命令 date 确认容器内部时间和你设置的调度时间是否一致。
    修复方法:启动容器时增加时区配置参数,示例如下:

    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=你的密码" -e "TZ=Asia/Shanghai" -p 1433:1433 -d mcr.microsoft.com/mssql/server:版本号
    

    也可以直接挂载宿主机时区文件:添加参数 -v /etc/localtime:/etc/localtime:ro,修改后重启容器即可生效。

  • 确认作业及调度的启用状态
    手动执行正常不代表调度规则已启用,可执行以下SQL语句确认状态:

    1. 确认作业本身启用:SELECT name, is_enabled FROM msdb.dbo.sysjobs WHERE name = '你的作业名称',返回值is_enabled为1代表已启用,为0则执行EXEC msdb.dbo.sp_update_job @job_name = '你的作业名称', @enabled = 1开启。
    2. 确认关联调度启用:SELECT name, is_enabled FROM msdb.dbo.sysschedules WHERE schedule_id IN (SELECT schedule_id FROM msdb.dbo.sysjobschedules WHERE job_id = (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = '你的作业名称')),返回值is_enabled为1代表已启用,为0则执行对应调度更新语句开启。
  • 查看SQL Server Agent日志排查错误
    作业活动监视器无记录时可直接查看Agent运行日志,进入容器执行命令 cat /var/opt/mssql/log/sqlagent.out 即可查看完整调度运行日志,定位权限、规则解析类错误。

  • 版本Bug修复
    2017及早期版本的Linux版SQL Server存在已知的Agent调度失效Bug,执行SELECT @@VERSION确认版本,若为未打累积更新的旧版本,升级到对应大版本的最新累积更新即可解决。

  • 检查调度规则有效性
    执行SQL SELECT * FROM msdb.dbo.sysschedules WHERE schedule_id IN (SELECT schedule_id FROM msdb.dbo.sysjobschedules WHERE job_id = (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = '你的作业名称')),确认active_end_date未设置为已过去的日期,freq、freq_interval等频率参数符合你的调度预期。

内容的提问来源于stack exchange,提问作者Boximity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:45:01