2015-02-24 37 views
1

让我也支持一步 - 我试图在IS软件包中实施完整性检查。这个想法是,整个包运行在一个未提交的读取事务中,最后一步是确定某些行数是否存在的检查。如果它们不是,我想引发异常并回滚事务。如何在Integration Services中的执行Sql任务中引发错误?

如果你能告诉我如何做到这一点,或者甚至更好,建议一个更好的方法来实施完整性检查,那将是很好的。

+0

您是使用登台表还是直接从IS软件包导入生产表?如果使用登台表,您可以在插入生产表之前对这些表进行完整性检查。 – Phoenix 2015-02-24 19:13:59

+0

在这种情况下,整个临时数据库。用此分段数据库同步生产的过程是分开的。我现在所拥有的是一个Execute Sql任务,但它所能做的只是生成行数,如果它们错了,没有办法打开这个包。 – 2015-02-24 19:16:04

+0

如果你知道期望的rowcount *应该是什么,那么你可以为这个包设置一个全局变量。然后,如果观察的行数不等于预期的变量,则编辑约束条件以失败。 – Phoenix 2015-02-24 19:17:55

回答

1

为了您是否观察到的行数从预计的行数不同失败包:

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

如果观察到的rowcount与预期的rowcount不相等,则包会失败。

相关问题