【问题标题】:Continue adding input file rows to table after an error using SSIS使用 SSIS 出错后继续将输入文件行添加到表中
【发布时间】: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 目标。

Data Flow tab

在事件处理程序选项卡上,我为 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 行遇到错误后,包停止了。

System Variables

我不知道输入文件中有多少条记录。所以,我相信使用 For Loop Container 并不是添加到项目中的好对象。由于我对 SSIS 很陌生,我不知道 ForEach 循环容器或其他对象是否适合我。如何对这个包进行最低限度的修改,以便在遇到数据错误后继续处理输入文件的其余部分?

您能提供的任何帮助将不胜感激。提前感谢您的宝贵时间。

埃德

【问题讨论】:

    标签: ssis


    【解决方案1】:

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

    【讨论】:

    • 我做了你建议的改变。当然,现在错误不再记录到错误表中。在更改“忽略失败”时,我注意到还有另一个选项“重定向行”。我选择了那个选项,现在错误行被写入文件。将错误写入错误表会更好,但此解决方案是一个不错的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多