SSIS文件系统复制任务不会释放文件以进行编辑

时间:2017-01-17 15:56:58

标签: file sql-server-2008 ssis locking

我正在使用SSIS 2008从SQL 2008 R2查询中生成一些.txt逗号分隔文件。我有一个template.txt文档,其中包含一行列标题,我使用文件系统任务将其复制到新位置。完成后,我将新创建的文件用作平面文件目标,以接受我的SQL行。

我遇到的问题是应该将SQL插入全新目标文件的数据流任务失败,报告目标文件被另一个进程锁定。鉴于它是一个全新的文件,在我看来,唯一可以锁定它的是创建文件本身的文件系统任务 - 有什么方法可以阻止这种情况发生或释放锁定?

文件系统任务和所有其他任务都在foreach循环中。

我尝试在流程中插入暂停,并使用脚本任务循环,直到文件解锁;都没有奏效。我认为锁必须被移除,或者不是首先创建的。

我查看的所有内容似乎都假设如果你等待的时间足够长,那么锁就会消失,但这不是我在这里的经历。

欢迎任何建议。

编辑:

用脚本替换文件系统任务执行相同操作的任务没有解决问题 - 似乎在foreach循环中新创建的文件保持被包锁定,无论我是否尝试在foreach中编辑它循环或我在包中试过的任何地方。

我需要一些方法来释放锁定或阻止它出现在包裹中的文件上以便能够更新它 - 任何建议?

2 个答案:

答案 0 :(得分:0)

我尝试用脚本任务替换FST。 使用C#& System.IO复制模板。 问题可能是FST& DFT使用相同的文件连接对象。至少如果你让它与脚本任务一起工作就没关系了。 还要确保你100%使用你认为的文件 - 检查硬编码表达式或配置应用。

答案 1 :(得分:0)

尝试将每个部分(FST和DFT)包装在自己的序列容器中。我已经有大约2年的文件锁定问题了,我刚刚通过将3个数据提取包装在序列容器中解决了数据被提取到它们之后阻止3个文件的FTP的问题。 FTP任务已经在序列容器中。