我目前正在开发一个SSIS包,用于将来自多个服务器/文件源的大型机日志加载到数据库中。
目前我正在使用foreach循环容器循环包含文件名的记录集,并使用来自Data Flow
和Flat File Source
连接的File
任务加载文件通过派生列到OLE DB Destination
。
我已经在Data Flow
任务上内置了错误处理,以允许在指定的位置不会总是有一个日志文件(即,因为服务器在特定时间内因维护而关闭)文件按小时生成的时间段,但问题在完成处理这些错误后开始。
如果文件在尝试加载未找到的文件后立即存在,则开始加载它,但随后会抛出以下警告消息:[Message Log File Source (NORDXSL) [57]] Warning: There is a partial row at the end of the file.
,并且不会加载该文件中的所有记录文件。
但是,当我删除记录集中不存在的文件时(因此它只会尝试加载存在的文件,包括带有所谓“部分行”的文件),一切正常并且所有文件都可以/行加载没有问题。它似乎不想在正确丢失文件失败后加载第一个文件而且我不能为我的生活找出原因?
我已经尝试在Dispose()
任务完成处理后在文件连接上调用ReleaseConnection()
和Data Flow
,但这没有任何区别,我现在完全没有想法。< / p>
任何帮助都会非常感激,因为这是这个项目中的最后一个错误,我想把它拿出来。 PLEASE !!
谢谢, 詹姆斯
答案 0 :(得分:0)
我现在找到了解决这个问题的方法......
我在数据流任务之前添加了一个脚本任务来加载检查我想要读取的文件是否存在的文件:
if(System.IO.File.Exists(Dts.Variables(“MQLogMessagePath”)。Value.ToString))然后 Dts.TaskResult = Dts.Results.Success 其他 Dts.TaskResult = Dts.Results.Failure 结束如果
如果它不存在,它将无法迭代Foreach循环容器并继续到下一个文件。
宾果!