如何在 Integration Services 中的执行 Sql 任务中引发错误?

How do I raise an error in an Execute Sql Task in Integration Services?

让我也备份一个步骤 - 我正在尝试在 IS 包内实施健全性检查。这个想法是整个包在一个未提交的读取事务中运行,最后一步是检查以确定是否存在某些行计数,诸如此类。如果不是,我想引发异常并回滚事务。

如果你能告诉我如何做到这一点,或者更好的是,建议一个更好的方法来实施健全性检查,那就太好了。

如果您观察到的行数与您预期的行数不同,为了使包失败:

  1. 创建一个包全局变量来保存您预期的行数。这可能源自 DFT 中的 RowCount 步骤,手动设置等
  2. 编辑提供观察到的行数的 Execute SQL Task,并将结果集设置为 Single Row
  3. Execute SQL Task 的“结果集”选项卡中,将此结果集分配给一个变量。
  4. 在最后一步之前编辑约束条件。将评估操作设置为 Expression and Constraint。将值设置为 Failure。在您的表达式中,计算 ResultSetVariable <> ExpectedRowCountVariable

如果观察到的行数不等于预期的行数,包将失败。

您可以使用以下 SQL:

在 SSIS "Execute SQL" 任务中引发错误并回滚事务

Raiserror('Something went wrong',16,1)

这将导致 "Execute SQL" 任务 return SSIS 包的错误,任务将遵循 "red"(失败)路径。然后您可以使用此路径回滚事务并进行任何整理。

这种方法的优点是您可以在执行 SQL 任务中完成所有处理,然后在需要时调用 Raiserror。