首页 > 解决方案 > 如何杀死一直显示“进行中”状态的 SQL Server 作业?

问题描述

我正在使用 SQL Server 2014,并且我有一个作业(我们称之为 JN5)计划在每天的特定时间运行。该作业运行一个 SSIS 包,其中包含 11 个步骤。查看 SSMS 中的作业历史记录,该作业似乎卡在第 9 步。它不是显示为失败,而是“进行中”。

我很难阻止它。我尝试了以下方法:

USE msdb ; 
GO      

EXEC dbo.sp_stop_job N'JN5' ;  
GO

执行后出现以下错误:

消息 22022,级别 16,状态 1,第 2 行
SQLServerAgent 错误:停止作业 JN5(来自用户 sa)的请求被拒绝,因为作业当前未运行。

然后,我尝试了以下操作:我通过 SQL Server 配置管理器重新启动了 SQL Server 代理。当我在 SSMS 中查看 SQL 作业状态(刷新后)时,它仍然显示“进行中”!

我下一次尝试解决这个问题是重新启动 SQL Server 2014。然后我再次在 SSMS 中检查了状态。它仍然显示“进行中”状态!

我刚刚在 StackOverflow 上查看了以下内容:SQL Server 作业活动(作业失败,但作业活动中的历史记录仍显示“正在运行”状态)

但是,我不确定上述链接是否与我的问题有关。

关于下一步我可以尝试什么的任何想法?

标签: sqlsql-serversql-server-agent

解决方案


我最近遇到了类似的问题。我有一个作业正在运行,通过 SQL Server 代理作业安排,从 SSISDB 目录执行。(即计划的 SSIS 作业)。

在作业期间,其中一个步骤处理 SSIS 任务,该任务使用连接管理器连接到文件(sql 脚本)。当它运行时,有人对服务器应用了一些补丁并重新启动了 SQL 服务堆栈。

这导致作业看起来像是正在处理(通过作业历史记录)并且似乎正在运行(通过集成服务仪表板)......但是不再有任何 IO(并且脚本中的任何 SQL 都没有完成执行)。 ..所以我知道杀死这份工作相对安全。

我得到了同样的错误:

消息 22022,级别 16,状态 1,第 9 行 SQLServerAgent 错误:停止作业 XXXXX 的请求(来自用户 YYYYY)被拒绝,因为该作业当前未运行。

所以我从集成服务仪表板引用了操作的 ID,并发出以下命令:

USE SSISDB
GO

EXEC [catalog].[stop_operation] <OperationId>

这从 Integration Services 仪表板中删除了正在运行的作业。


推荐阅读