Azure Elastic Job Agent更新中无法执行作业,如何恢复正常运行?
Azure Elastic Job Agent Stuck in "Updating" State - Fixes for Unresponsive Jobs
我处理过不少类似的案例——当Azure Elastic Job Agent卡在"Updating"状态时,整个作业调度机制会完全失效:自动作业停跑、手动启动的作业卡在Created状态、停止命令毫无反应,这和你遇到的7天未执行作业、job_executions表字段不填充的现象完全匹配。下面是经过验证的解决步骤:
1. 强制重置Agent状态(优先尝试)
Azure门户没有直接的"取消更新"按钮,但可以通过Azure CLI或PowerShell触发Agent的重新部署,这通常能打破Updating的死循环:
用Azure CLI触发同步:
az sql job-agent update --resource-group <你的资源组名称> --server <你的SQL服务器名称> --name <你的Job Agent名称>
这个命令会重新同步Agent的配置,多数情况下能让状态回到正常的"Ready"。
用PowerShell操作:
Set-AzSqlJobAgent -ResourceGroupName <你的资源组名称> -ServerName <你的SQL服务器名称> -Name <你的Job Agent名称>
如果上面的命令没效果,可以尝试先暂停再重启Agent:
# 暂停Agent az sql job-agent update --resource-group <你的资源组名称> --server <你的SQL服务器名称> --name <你的Job Agent名称> --state Paused # 恢复Agent到Ready状态 az sql job-agent update --resource-group <你的资源组名称> --server <你的SQL服务器名称> --name <你的Job Agent名称> --state Ready
2. 清理失效的作业执行记录
你手动删除jobs.job_executions中失效记录的操作是对的,这里补充两点注意事项:
- 只删除那些确认失效的条目:比如
start_time为空、lifecycle一直停在Created的记录 - 删除后不要立刻触发新作业,等Agent状态恢复正常后再操作
3. 极端方案:重建Job Agent(最后手段)
如果Agent卡在Updating状态超过24小时,且上面的方法都无效,只能考虑重建:
- 备份作业配置:用这些存储过程导出所有作业的详细信息:
-- 导出作业基本信息 EXEC jobs.sp_help_job; -- 导出指定作业的步骤 EXEC jobs.sp_help_job_step @job_name = 'SomeJobName'; -- 导出目标组信息 EXEC jobs.sp_help_target_group; - 删除当前的Job Agent
- 在同一SQL Server上重新创建Job Agent
- 导入备份的作业配置,重新设置调度规则
验证恢复效果
当Agent状态回到"Ready"后,按以下步骤验证:
- 先手动触发一个作业测试:
然后查看执行记录:EXEC [jobs].[sp_start_job] 'SomeJobName'
确认SELECT TOP 1000 * FROM jobs.job_executions WHERE job_name = 'SomeJobName' ORDER BY start_time DESClifecycle会推进到InProgress,且target_type、target_database_name等字段正常填充。 - 等待自动调度的作业触发,确认自动执行功能恢复正常。
内容的提问来源于stack exchange,提问作者Keagon Louw
相关产品推荐
相关产品推荐

