因此,有一个通过集成服务运行的 ETL 作业,我从 SQL 作业名称 StartStageStore 开始。该作业的最后一步是开始另一个作业并报告成功。此调用的作业称为 LoopStageStore。LoopStageStore 所做的只是执行一个存储过程,重新启动 StartStageStore 作业,这样我们就不断地将源数据拉入我们的系统。这项工作已经运行了几个星期,没有失败。直到最后两个晚上,我开始收到此错误“以用户身份执行:AgentUser。SQLServerAgent 错误:运行作业阶段/存储 AgentUser 的请求被拒绝,因为该作业已根据用户 AgentUser 的请求运行。[SQLSTATE 42000](错误 22022) . 步骤失败。
这应该是不可能的,因为运行 StartStageStore 作业完成并且在 LoopStageStore 启动时不再运行。
在这里我们可以看到在 12:19:14 执行的最后一步。
并且下一个作业在 12:19:15 失败,说 StartStageStore 当前正在运行。我已经有一个解决方法,我只是在第二份工作上抛出延迟。我只是想知道是否有人知道为什么会发生这种情况。
BEGIN
WAITFOR DELAY '00:01';
EXECUTE dbo.LoopStageStore
END; GO
好吧,我遇到的问题是,为完成作业而写入日志文件的时间有时比运行重新启动此循环的存储过程所需的时间更长。
对此的解决方案是我最初的解决方法。
如果有人想在这里使用它是代码。
让它稍等一下。