【问题标题】:How to make a SQL Server agent job step failure on purpose如何故意使 SQL Server 代理作业步骤失败
【发布时间】:2017-03-25 20:56:40
【问题描述】:

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

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

【问题讨论】:

  • 所以你想要 SQL 总是出错?比如'select(Select 1 union SELECT 2) X'
  • RAISERROR ('Fail!', 16, 1)

标签: sql-server sql-server-job


【解决方案1】:

您也可以使用“选择 1/0”,这将解析,但执行时会出错

【讨论】:

  • 这就是 try/catch 的用途。使用 1/0 是一种不好的做法。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多