提问人:Thilini 提问时间:11/15/2023 最后编辑:XedniThilini 更新时间:11/15/2023 访问量:26
为什么当步骤中出现错误时,SQL 代理作业不会失败?
Why is the SQL Agent job not failing when there's an error in a step?
问:
我的 2019 服务器中有几个计划的 SQL 代理作业。每个 job-One 存储过程(我通常称之为容器)都由几个类似于下面的存储过程组成。
SQL_Agent_Job_1
Create Procedure SQL_Agent_Job_1 as
BEGIN
exec Stored_proc1
exec Stored_proc2
exec Stored_proc3
exec Stored_proc4
END
SQL_Agent_Job_2
Create Procedure SQL_Agent_Job_2 as
BEGIN
exec Stored_proc5
exec Stored_proc6
exec Stored_proc7
exec Stored_proc8
END
如果作业在任一步骤中立即遇到错误,我需要作业失败,例如,如果作业 1 在 StoredProc2 中遇到数据溢出错误,我希望作业 1 在不执行 StoredProc3 和 4 的情况下失败。我的一份工作就是这种情况,但在少数工作中却不是这样。
因此,作业 2 即使 StoredProc6 中存在无效的列名错误,并且无法完成它应该完成的所有操作(例如将某些行插入到表中),也会忽略该操作,然后移动到 StoredProc7 和 8,然后生成错误,作业 2 失败。这使得很难跟踪作业在哪个点失败。
我想了解导致此行为的原因,以及应该进行哪些更改才能使作业在遇到错误时立即失败。
答: 暂无答案
评论
SET XACT_ABORT ON;