MSSQL 代理:如果导出 0 行则通知失败

MSSQL agent: Failed notification if 0 rows exported

我是 运行 MSSQL 代理的日常工作,它运行一个包以将某个 table 导出到 excel 文件。完成后它会给我发一封电子邮件。

有几次 table 是空的,它导出了 0 行。 我没有收到工作失败通知,因为工作没有失败。

我希望在导出 0 行时收到失败通知。

您将如何实现这一目标?

谢谢

有许多方法可以强制包 return 失败(这将导致调用代理作业报告失败)。

一种简单的方法是在填充电子表格的数据流任务中的源和目标之间放置一个 Row Count 任务。将值分配给变量,例如@RowsExported。

返回 Control Flow 选项卡,如果包中还有更多内容,请在导致其余工作的先例约束上设置条件,其中 @RowsExported > 0 因此包的其余部分只会如果发送了行,则继续。无论包中是否还有更多内容,都添加一个新的先例约束,该约束来自条件 @RowsExported == 0 的数据流。将该约束发送到仅包含脚本 SELECT 1/0;Execute SQL 任务。

现在,如果导出零行,包将抛出被零除错误,并且调用作业将失败。

当然还有其他方法,但是这个可以很快实现。