关于错误处理:如何停止SSIS脚本组件以处理数据

How do i stop SSIS Script component to process data

我正在使用脚本组件作为转换处理一个不规则的分号分隔文件。

该组件能够处理数据并加载到OLEDB目标。但当发现错误时,应该停止进一步处理。当我使用Try-Catch块时,组件不会失败,并继续处理直到结束。

是否有任何方法可以在不破坏组件/包的情况下进一步停止处理?

如果需要其他信息/详细信息,请通知我?

样例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
str.split(";");

if(column[0] =="H")
{
col1=Column[3];
}

if(column[0] !="T")
{
try
{
Row.col1=Column[0];
Row.col2=Column[1];
.....
}
catch
{
update the variable to check if we have error in file.
}
}

谢谢你抽出时间。


我没有从任何地方得到任何帮助,但是作为一个解决方法,我在代码中放置了一个返回语句。它检查错误变量,如果它是真的,那么我将返回而不进一步处理。但问题仍然是它处理整个文件:(。但它是有效的!!!!


一般的想法是使用try/catch块来确保数据处理本身不会中止。一旦您知道脚本没有向引擎报告故障,那么不调用AddRow()是一个简单的过程。

伪码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
foreach(line in fileReader)
{
    try
    {
        // perform dangerous operations here
        // Only add row if you have been able to parse current line
        Output0Buffer.AddRow();
        Output0Buffer.Col1 = parsedContent;
    }
    catch
    {
        // Signal that we should break out of the loop
        // do not propagate the error
        // You might want to do something though so you know you
        // have an incomplete load
        break;
    }

}

如果您只是想跳过当前的坏行,可以用上面的break代替continue

循环中断与继续