2011-03-29 54 views
12

我需要将我的Foreach循环中的文件夹设置为可变位置。我试着只是将该位置添加到我的包配置中,并且它的行为像是有效的,但是当我打开配置文件时,它不在那里。SSIS Foreach Loop文件夹作为变量

我已将它设置为Foreach File Enumerator,其中硬编码的路径和检索完全限定的文件名。我的变量映射有一个索引为0的变量CurrentFile。

因此,我已将它更改为Foreach来自变量枚举器,SourceFiles变量为\ server \ path *。*。但现在它抱怨CurrentFile,被分配的值的类型不同于变量类型(字符串)。

我猜我需要以某种方式在集合选项卡上使用表达式与枚举器?怎么样?

  • 一般:Foreach循环容器
  • 收集:FOREACH从Varialbe枚举;变量是User :: SourcePath;表达式(未使用)
  • 变量映射:变量用户:: CurrentFile,索引0
  • 表达式:(未使用)

错误:0xC001F009在MyPackage的:类型值被分配给变量“ User :: CurrentFile“与当前变量类型不同。变量在执行期间不能改变类型。变量类型是严格的,除了Object类型的变量。 错误:Foreach循环容器中的0xC001C012:ForEach变量映射编号1到变量“User :: CurrentFile”不能应用。

回答

19

一位同事向我展示了如何让它工作。不要将其更改为“Foreach from Variable Enumerator”,但将其保留为“Foreach File Enumerator”。

  • Collection:Foreach File Enumerator;在Enumerator配置中放入一个文件夹和文件。在Expressions下,将Directory设置为指向该目录的用户变量(它将优先于您输入的文件夹);将FileSpec设置为指向文件的用户变量(这将对您输入的文件有优先权)。
Directory @[User::SourcePath] (value: \\server\directory) 
FileSpec @[User::CopyFileName] (value: *.*) 
  • 变量映射:变量用户::当前文件,索引0
  • 表达式:(未使用)