0

我正在尝试创建一个使用 SSIS 将 excel 文件导入数据库的包。

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

Main Container -> First For Each container(称为 FE1) 获取文件名(分配给变量)-> Second For Each Container(称为 FE2) 获取工作表名称并开始导入过程。

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

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

(一旦它起作用,我想创建一个将文件移动到存档文件夹的“成功”过程)

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

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

截屏

4

1 回答 1

0

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

为了爱和金钱,即使移动文件任务在循环之外,我也无法获得 excel 连接器来释放文件。

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

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

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

于 2017-01-15T23:19:50.477 回答