如果子容器进程失败,则在父容器中执行SSIS执行文件任务

时间:2017-01-01 15:29:51

标签: ssis ssis-2016

我试图创建一个使用SSIS将Excel文件导入数据库的软件包。

由于操作必须定期执行此操作并且文件名遵循约定但不相同,并且工作表/选项卡名称并不总是相同,因此SSIS包的设置如下:

主要容器 - > First For Each容器(称之为FE1) 获取文件名(分配给变量) - > 每个容器的第二个(称为FE2) 获取工作表名称并启动要导入的过程。

我所做的是创造一个"失败"从FE2到FE1中的文件系统任务进程的优先约束。

这个想法是,如果由于某种原因导入失败,则完成文件移动。

(一旦它有效,我想创建一个"成功"将文件移动到存档文件夹的过程)

当每个容器只有一个"时,文件任务过程才有效。 (即没有以现在的方式嵌套)但是当所有进程都在嵌套容器中时引用"正在使用的文件"它失败了。我假设这是因为每个容器的第一个锁定文件,因此我将文件任务进程移动到每个容器的第一个并使用了先例控件。

非常感谢任何帮助和建议。

screenshot

1 个答案:

答案 0 :(得分:0)

为了其他可能遇到同样问题的人的利益:

对于爱情和金钱,我可以获得excel连接器来释放文件,即使移动文件任务不在循环中。

最后,我记录了移动到数据库中的表中的文件,然后执行了包含移动文件任务的第二个包,并将使用成功导入(和失败的导入)文件列表遍历表行并根据失败/成功标志将它们移动到目的地。

这是我成功实现这一目标的唯一途径。

当必须遍历每个excel文件的工作表(即有效的两个excel连接)时,SSIS不会释放文件,所以我永远收到使用中的文件错误和失败。