web-dev-qa-db-ja.com

変数としてのSSISForeachループフォルダー

Foreachループ内のフォルダーを可変の場所に設定する必要があります。パッケージ構成に場所を追加しようとしましたが、機能するように動作しましたが、構成ファイルを開いたときにそこにありませんでした。

パスをハードコードしてForeachFile Enumeratorに設定し、完全修飾ファイル名を取得しました。私の変数Mappingsには、インデックス0の変数CurrentFileがあります。

そこで、SourceFiles変数が\ server\path *。*のForeachFrom VariableEnumeratorに変更しました。しかし、現在、割り当てられている値の型が変数の型(文字列)と異なるというCurrentFileについて不平を言っています。

[コレクション]タブの[列挙子]で式を使用する必要があると思いますか?どうやって?

  • 一般:Foreachループコンテナ
  • コレクション:Varialbe列挙子からのForeach;変数はUser :: SourcePathです。式(未使用)
  • 変数マッピング:変数User :: CurrentFile、インデックス0
  • 式:(使用されていません)

エラー:MyPackageの0xC001F009:変数 "User :: CurrentFile"に割り当てられている値のタイプが現在の変数タイプと異なります。変数は実行中にタイプを変更できません。 Object型の変数を除いて、変数型は厳密です。エラー:0xC001C012 at Foreachループコンテナー:ForEach変数マッピング番号1から変数 "User :: CurrentFile"を適用できません。

15
thursdaysgeek

同僚がそれを機能させる方法を教えてくれました。 「ForeachfromVariable Enumerator」に変更せず、「ForeachFileEnumerator」のままにしておきます。

  • コレクション:Foreachファイル列挙子;列挙子構成のフォルダーとファイルに配置します。 [式]で、[ディレクトリ]をディレクトリを指すユーザー変数に設定します(入力したフォルダーよりも優先されます)。 FileSpecを、ファイルを指すユーザー変数に設定します(これにより、入力したファイルが優先されます)。
Directory @[User::SourcePath]  (value: \\server\directory)
FileSpec @[User::CopyFileName] (value: *.*)
  • 変数マッピング:変数User :: Current File、index 0
  • 式:(使用されていません)
20
thursdaysgeek