【发布时间】:2016-02-10 19:30:32
【问题描述】:
我是 SSIS 的新手,遇到了一个一直困扰我的软件包问题。
我的公司有 SQL Server Business Intelligence Development Studio 2008(也有 SQL Server 2008 R2)。在“控制流”选项卡上,我有两个可执行文件:一个截断 SQL Server crm_account 表的执行 SQL 任务 (Truncate_crm_account_Table) 和一个数据流任务。
在“数据流”选项卡上,我有一个打开并读取管道分隔文件的平面文件源,以及一个将输入文件中的行移动到 crm_account 表的 OLE DB 目标。
在事件处理程序选项卡上,我为 Truncate_crm_account_Table 创建了一个 OnError 事件处理程序,并为数据流任务创建了一个 OnError 事件处理程序。两个 OnError 事件处理程序都是一个执行 SQL 任务对象,它将遇到的错误写入 SQL Server 错误表。
如果数据没有问题,这一切都可以正常工作。当数据出现错误时(例如,在第 10,000 行),程序包会将通过其黄油的记录写入 crm_account 表(例如,大约 9,000 条记录)。该包还将错误写入错误表,然后停止。项目经理希望包做的是在遇到错误后继续处理输入文件的其余部分。
在阅读了一些与我有点相关的 SSIS 问题的论坛和帖子之后,这就是我目前所做的。在控制流选项卡上,对于数据流任务,我设置了 MaximumErrorCount = 0 并注意到 FailPackageOnFailure = False(同样,FailParentOnFailure = False)。我看过一些提到设置系统变量 Propagate = False 的帖子。这两个我都做了,但是在第 10,000 行遇到错误后,包停止了。
我不知道输入文件中有多少条记录。所以,我相信使用 For Loop Container 并不是添加到项目中的好对象。由于我对 SSIS 很陌生,我不知道 ForEach 循环容器或其他对象是否适合我。如何对这个包进行最低限度的修改,以便在遇到数据错误后继续处理输入文件的其余部分?
您能提供的任何帮助将不胜感激。提前感谢您的宝贵时间。
埃德
【问题讨论】:
标签: ssis