SSIS-删除由于锁定变量导致的每个循环错误中的文件

SSIS-删除由于锁定变量导致的每个循环错误中的文件,ssis,Ssis,我有一个SSIS包,它在文件夹中查找,循环遍历其中的每个文件,将文件导入SQL Server,执行SQL任务,然后需要删除该文件,然后循环遍历下一个文件。导入和循环在没有删除文件步骤(文件系统任务)的情况下工作,但是删除文件错误并显示消息“未能锁定变量。找不到变量”。所讨论的变量是我为“当前文件”创建的变量。For Each循环容器的第一部分使用它查找当前文件并成功导入它。我认为,导入文件会锁定变量。然后,当它要基于变量删除文件时,它无法访问该变量,因为该变量已被锁定,因此失败。你知道如何允许它

我有一个SSIS包,它在文件夹中查找,循环遍历其中的每个文件,将文件导入SQL Server,执行SQL任务,然后需要删除该文件,然后循环遍历下一个文件。导入和循环在没有删除文件步骤(文件系统任务)的情况下工作,但是删除文件错误并显示消息“未能锁定变量。找不到变量”。所讨论的变量是我为“当前文件”创建的变量。For Each循环容器的第一部分使用它查找当前文件并成功导入它。我认为,导入文件会锁定变量。然后,当它要基于变量删除文件时,它无法访问该变量,因为该变量已被锁定,因此失败。你知道如何允许它基于“当前文件变量”导入“当前文件”,然后基于同一变量删除它,然后循环遍历其余文件吗?将delete file控件从For Each循环中移除不是一个选项,因为我需要在导入后删除每个文件-如果我在所有导入后都执行delete,我可能会删除在运行导入后到达的目录中的文件,因此我想我会删除未导入的文件。谢谢你的帮助

解决此问题的方法是创建一个新的对象变量。在当前循环中,可以使用导入的每个文件的完整路径和文件名填充它。然后创建第二个“For Each Loop Container”控制任务,该任务在该对象变量上枚举。然后,在这个新的For-Each循环容器中,您只能删除对象变量中定义的那些文件(先前导入的)。这样,您就不会删除文件夹中您不希望触摸的任何其他文件

下面的链接可能有助于了解如何在For Each循环容器中设置对象变量,然后一次解析出一个文件名进行删除

让我知道这是否有帮助,或者您是否需要其他详细信息