使用SSIS发生错误后继续向表中添加输入文件行

时间:2016-02-10 19:30:33

标签: ssis

我是SSIS的新手,并且遇到令我困惑的软件包问题。

我的公司有SQL Server Business Intelligence Development Studio 2008(也称为SQL Server 2008 R2)。在“控制流”选项卡上,我有两个可执行文件:一个执行SQL任务(Truncate_crm_account_Table),它截断SQL Server crm_account表和一个数据流任务。

在“数据流”选项卡上,我有一个平面文件源,它打开并读取管道分隔文件,以及一个OLE DB目标,用于将输入文件中的行移动到crm_account表。

Data Flow tab

在“事件处理程序”选项卡上,我为Truncate_crm_account_Table创建了一个OnError事件处理程序,为数据流任务创建了一个OnError事件处理程序。两个OnError事件处理程序都是一个执行SQL任务对象,它将遇到的错误写入SQL Server错误表。

如果数据没有问题,这一切都可以正常工作。当数据出错时(例如,在行10,000上),程序包会将已经通过其黄油的记录写入crm_account表(例如,9,000个左右的记录)。该程序包还将错误写入错误表,然后停止。项目经理希望程序包执行的操作是在遇到错误后继续处理输入文件的其余部分。

在阅读了一些与我有点相关的SSIS问题的论坛和帖子之后,这就是我迄今为止所做的。在Control Flow选项卡上,对于Data Flow Task,我设置了MaximumErrorCount = 0并注意到FailPackageOnFailure = False(同样,FailParentOnFailure = False)。我看过一些提到设置System变量Propagate = False的帖子。这两个我已经完成了,但是在遇到第10,000行的错误后包停止了。

System Variables

我不知道输入文件中会有多少条记录。因此,我认为使用For循环容器不是添加到项目中的好对象。由于我是SSIS的新手,我不知道ForEach循环容器或其他对象是否可行。如何对这个包进行最低限度的修改,以便在遇到数据错误后继续处理输入文件的其余部分?

非常感谢您提供的任何帮助。提前感谢您的时间。

1 个答案:

答案 0 :(得分:0)

在源节点的数据流选项卡中,找到左侧的错误输出部分。点击它,然后将相关列更改为“忽略失败'在错误列下。