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

时间:2015-02-24 19:11:58

标签: sql-server ssis

我还要备份一个步骤 - 我试图在IS包中实施健全性检查。我们的想法是整个包在一个读取未提交的事务中运行,最后一步是一个检查,确定存在某些行数,即那种东西。如果它们不是,我想提出异常并回滚事务。

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

2 个答案:

答案 0 :(得分:1)

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

  1. 创建一个包全局变量来保存您预期的行数。这可以从DFT中的RowCount步骤,手动设置等等中获得。
  2. 修改提供观察到的行数的Execute SQL Task,并将结果集设置为Single Row
  3. Execute SQL Task的“结果集”标签中,将此结果集指定给变量。
  4. 在最后一步之前编辑约束条件。将评估操作设置为Expression and Constraint。将值设置为Failure。在您的表达式中,评估ResultSetVariable <> ExpectedRowCountVariable
  5. 如果观察到的rowcount不等于预期的rowcount,则包将失败。

答案 1 :(得分:0)

您可以使用以下SQL在SSIS“执行SQL”任务中引发错误并回滚事务:

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

这将导致“ Execute SQL”任务将错误返回到SSIS包,并且该任务将遵循“红色”(失败)路径。然后,您可以使用此路径回滚事务并进行整理。

这种方法的优势在于,您可以在“执行SQL”任务中进行所有处理,然后根据需要调用Raiserror。