收到“由于作业已在运行而拒绝运行作业的请求” 当没有作业正在运行时?

Zan*_*ane 7 sql-server-2008 sql-server

因此,有一个通过集成服务运行的 ETL 作业,我以 SQL 作业名称 StartStageStore 开头。这个作业的最后一步是开始另一个作业并报告成功。此调用的作业称为 LoopStageStore。LoopStageStore 所做的只是执行一个存储过程,重新启动 StartStageStore 作业,这样我们不断地将源数据拉入我们的系统。这项工作已经运行了几个星期没有失败。直到最后两个晚上,我才开始收到此错误“以用户身份执行:AgentUser。SQLServerAgent 错误:运行作业 Stage/Store AgentUser 的请求被拒绝,因为该作业已根据用户 AgentUser 的请求运行。[SQLSTATE 42000](错误 22022) . 步骤失败。

这应该是不可能的,因为运行 StartStageStore 作业完成并且在 LoopStageStore 启动时不再运行。

舞台商店作业

在这里我们可以看到在 12:19:14 执行的最后一步。循环舞台商店

下一个作业在 12:19:15 失败,表示 StartStageStore 当前正在运行。我已经有一个解决方法,我只是在第二份工作上抛出延迟。我只是想知道是否有人知道为什么会发生这种情况。

BEGIN
WAITFOR DELAY '00:01';
    EXECUTE dbo.LoopStageStore
END; GO
Run Code Online (Sandbox Code Playgroud)

Zan*_*ane 3

好吧,我遇到的问题是,为完成作业而写入日志文件的时间有时比运行重新启动此循环的存储过程所需的时间更长。

解决这个问题的方法是我原来的解决方法。

如果有人想使用它,这里是代码。

BEGIN
WAITFOR DELAY '00:01';
    EXECUTE dbo.LoopStageStore
END; GO
Run Code Online (Sandbox Code Playgroud)

只要稍微等一下就可以了。