如何故意使 SQL Server 代理作业步骤失败

Jac*_*ack 8 sql-server sql-server-job

我有一个进程,第一步是检查其他进程的状态。如果其他过程完成,我想运行其余步骤,如果没有,我想退出工作。

我有一个表格来查看状态,如果全部完成,它将标记为“完成”。那么我应该在第一步中输入什么,以便当状态不是“完成”时,会使步骤 1 失败?

Mat*_*att 6

有很多方法可以强制 sql-server 抛出(或引发)错误,但我建议对 SQL-Server 2012 + 使用 THROW 或低于该值的 RAISERROR,因为这是您的实际意图。所以你可以这样做:

IF EXISTS(SELECT * FROM StatusTable WHERE status <> 'done')
BEGIN
    ;THROW 51000, 'Process Is Not Finished', 1
END
Run Code Online (Sandbox Code Playgroud)