如何在 Integration Services 中的执行 Sql 任务中引发错误?
How do I raise an error in an Execute Sql Task in Integration Services?
让我也备份一个步骤 - 我正在尝试在 IS 包内实施健全性检查。这个想法是整个包在一个未提交的读取事务中运行,最后一步是检查以确定是否存在某些行计数,诸如此类。如果不是,我想引发异常并回滚事务。
如果你能告诉我如何做到这一点,或者更好的是,建议一个更好的方法来实施健全性检查,那就太好了。
如果您观察到的行数与您预期的行数不同,为了使包失败:
- 创建一个包全局变量来保存您预期的行数。这可能源自 DFT 中的
RowCount
步骤,手动设置等
- 编辑提供观察到的行数的
Execute SQL Task
,并将结果集设置为 Single Row
。
- 在
Execute SQL Task
的“结果集”选项卡中,将此结果集分配给一个变量。
- 在最后一步之前编辑约束条件。将评估操作设置为
Expression and Constraint
。将值设置为 Failure
。在您的表达式中,计算 ResultSetVariable <> ExpectedRowCountVariable
。
如果观察到的行数不等于预期的行数,包将失败。
您可以使用以下 SQL:
在 SSIS "Execute SQL" 任务中引发错误并回滚事务
Raiserror('Something went wrong',16,1)
这将导致 "Execute SQL" 任务 return SSIS 包的错误,任务将遵循 "red"(失败)路径。然后您可以使用此路径回滚事务并进行任何整理。
这种方法的优点是您可以在执行 SQL 任务中完成所有处理,然后在需要时调用 Raiserror。
让我也备份一个步骤 - 我正在尝试在 IS 包内实施健全性检查。这个想法是整个包在一个未提交的读取事务中运行,最后一步是检查以确定是否存在某些行计数,诸如此类。如果不是,我想引发异常并回滚事务。
如果你能告诉我如何做到这一点,或者更好的是,建议一个更好的方法来实施健全性检查,那就太好了。
如果您观察到的行数与您预期的行数不同,为了使包失败:
- 创建一个包全局变量来保存您预期的行数。这可能源自 DFT 中的
RowCount
步骤,手动设置等 - 编辑提供观察到的行数的
Execute SQL Task
,并将结果集设置为Single Row
。 - 在
Execute SQL Task
的“结果集”选项卡中,将此结果集分配给一个变量。 - 在最后一步之前编辑约束条件。将评估操作设置为
Expression and Constraint
。将值设置为Failure
。在您的表达式中,计算ResultSetVariable <> ExpectedRowCountVariable
。
如果观察到的行数不等于预期的行数,包将失败。
您可以使用以下 SQL:
在 SSIS "Execute SQL" 任务中引发错误并回滚事务Raiserror('Something went wrong',16,1)
这将导致 "Execute SQL" 任务 return SSIS 包的错误,任务将遵循 "red"(失败)路径。然后您可以使用此路径回滚事务并进行任何整理。
这种方法的优点是您可以在执行 SQL 任务中完成所有处理,然后在需要时调用 Raiserror。