我希望能够做到以下几点:
示例:我有一个包含三列的文件(“type”,“value”,“message”)
我想使用flatfile目标逐行导入该文件。然后我想做条件拆分。如果“type”列的值为“1”,我想将该行写入我的destinatoin。如果类型是“2”或“3”我想忽略它们。但是,如果它的“A”或“0”我想要失败组件。
除了“失败”部分,我有其他所有东西。我将最后一个条件(“列不是1,2或3”)的输出配置为“Fail Component”,但它实际上并没有使组件失败。
答案 0 :(得分:7)
将脚本组件添加到数据流(作为目标),并将其链接到您要强制程序包失败的条件的条件拆分。
在脚本组件内添加
bool pbCancel = false;
this.ComponentMetaData.FireError(100, "Script Component", "Data Error <type message here>", "", 0, out pbCancel);
脚本组件本身将成功,但数据流任务将失败并导致程序包失败
答案 1 :(得分:0)
我只想添加一些我搜索过的东西,最后单独找到...
就像Daryl所说,如果你只使用ComponentMetaData.FireError()
方法,你会看到执行结果中的错误,但脚本组件不会失败。数据流任务将失败但仅在最后,在完成工作后(因此可能在一些INSERT和/或UPDATE之后)。
如果要完全停止数据流执行,可以这样做:
RAISERROR(N'At least one line not configured have been found',16,1)
这样,您就可以为不符合条件的每一行引发错误,并在插入记录之前停止数据流任务,如果发生至少一个错误。