SSIS Foreach循环在同一目录中发出多个文件

时间:2015-02-12 21:36:07

标签: csv foreach ssis

我有一个SSIS包,它从FTP服务器获取客户CSV文件,将它们未更改地导入数据库中的临时表,然后从那里规范化阶段数据,最后将其移动到相应的ODS模式表中。

我让这个软件包在测试环境中正常工作,使用示例文件(每个文件只包含完整文件将拥有的数据的百分比),但现在我尝试在生产环境中部署它使用完整文件,包的第一部分失败,出现以下错误:

[Flat File Source [2]]错误:读取文件时发生意外的磁盘I / O错误。

包的配置如下:

有一个序列容器,用于保存(4)ForEach文件枚举器。每个Foreach循环都设置为相同的文件夹/目录,并使用通配符循环遍历目录以查找具有特定名称的文件(例如,Foreach A在目录中查找名为A_ .csv的文件,Foreach B是寻找B _ .csv等)。当每个foreach找到它的文件时,它会将数据从csv复制到db中的相应表(stage.a,stage.b等)

对我来说,这个错误听起来像foreach循环可能通过同时循环遍历同一目录而相互锁定 - 这是以有效的方式设置,还是有更好的方法来实现同样的目标?让我感到困惑的事实是,这个软件包正在运行,这是我最初设置的方式,已经有一段时间了。

我现在能够让它工作的唯一方法是使用箭头使每个foreach循环的包处理工作流程单独进行,然后再转到下一个。

每个不同类型的文件是否应位于主目录中的自己的子文件夹中?

很抱歉,如果这已经在某个地方得到了解答 - 我在这里和谷歌搜索过去几天并没有找到任何类似的东西。

谢谢!

编辑:这是唯一的其他错误消息。只有当它们同时运行时,所有4个foreach循环才会出现这两个相同的错误。如果我强迫他们一个接一个地运行,一切正常。

[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The PrimeOutput method on Flat File Source returned error code 0xC020209D.  The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.  There may be error messages posted before this with more information about the failure.

0 个答案:

没有答案