SSIS - 脚本组件 - 根据结果更改图标

时间:2017-06-08 14:11:32

标签: sql-server error-handling ssis etl

在我的SSIS脚本组件任务(不是脚本任务,可以添加到控制流,但脚本组件任务,在数据流中添加)中,我在{的catch部分添加了一些错误处理{1}}阻止:

try, catch

这一切都运行正常,脚本任务捕获我在代码中引发的错误。我还可以在日志中看到错误:

// No connection was created. Exit gracefully
bool cancelOnError = false;
ComponentMetaData.FireError(ErrorCode: 10, SubComponent: "SubComponent", 
Description: "Couldn't set up the connection. This could be because an invalid host was 
provided, or due to a firewall blocking the connection.", HelpFile: "", HelpContext: 0, 
pbCancel: out cancelOnError);

但是,任务上的图标为绿色,并且我定义了处理结果的后续任务被触发(但是,没有什么可以处理,因为在处理任何数据之前会发生此特定错误):

Green icons

数据流正确显示红叉图标。有什么方法可以更改脚本组件上的图标,或者更好的方式让我(优雅地)模拟一个showstopping错误?

我找到this page on Microsoft,显示了脚本任务和脚本组件之间的区别,它们还说明了:

  

脚本组件作为数据流任务的一部分运行,但不运行   使用以下任一属性报告结果。

这对我没有希望,但我希望有人可以解决这个问题。我主要认为当我们捕获错误时,显示绿色图标有点误导。

1 个答案:

答案 0 :(得分:0)

为什么不将cancelonerror值更改为true

bool cancelOnError = true;

或者您可以使用Throw exception方法

throw new Exception("Couldn't set up the connection. This could be because an invalid host was 
provided, or due to a firewall blocking the connection.");

解决方法

如果您的目标是忽略未正确处理的行,最好的方法是将列添加到OutputBuffer(DT_BOOL类型),并将此列值设置为False是错误,否则它的值必须是True

在脚本组件之后添加条件拆分,以根据此列过滤行。用类似的表达方式:

[FlagColumn] == True