我有一个SSIS包,它在文件夹中查找,循环遍历每个文件,将文件导入SQL Server,执行SQL任务,然后需要删除文件,然后循环访问下一个文件。导入和循环工作没有删除文件步骤(文件系统任务),但删除文件错误,消息“无法锁定变量。无法找到变量”。有问题的变量是我为“当前文件”创建的变量。 For Each Loop容器的第一部分正在使用它来查找当前文件并成功导入它。我认为发生了什么,导入文件会锁定变量。然后,当它要根据变量删除文件时,它无法访问变量,因为它已被锁定,因此失败。知道如何允许它根据“当前文件变量”导入“当前文件”,然后根据相同的变量删除它,然后循环其余的文件?将删除文件控件从For Each循环中删除不是一个选项,因为我需要在导入后删除每个文件 - 如果我在所有导入后删除,我可能会删除运行之后到达目录的文件中的文件导入,所以我想删除非导入的文件。谢谢你的帮助!
答案 0 :(得分:0)
此问题的解决方法是创建新的对象变量。在当前循环中,您可以使用导入的每个文件的完整路径和文件名填充它。然后创建第二个" For Each Loop Container"在该对象变量上枚举的控制任务。然后在这个新的For Each循环容器中,您只能删除在对象变量中定义的那些文件(之前导入的)。这样您就不会删除文件夹中您不想触摸的任何其他文件。
以下链接可能有助于提供有关如何在For Each循环容器中设置对象变量,然后一次解析出一个文件名以进行删除的一些想法。 Get List of Files
如果这有帮助,或者您需要其他详细信息,请与我们联系。