プロセスタスクを含むSSISパッケージがあります。プロセスタスクはバッチファイルを実行する必要があります。バッチファイルの場所は、環境(開発、本番)によって異なります。
Process TaskオブジェクトのExecutableプロパティの値をユーザー変数に動的に設定するにはどうすればよいですか?
プロセスタスクを含むSSISパッケージがあります。プロセスタスクはバッチファイルを実行する必要があります。バッチファイルの場所は、環境(開発、本番)によって異なります。
Process TaskオブジェクトのExecutableプロパティの値をユーザー変数に動的に設定するにはどうすればよいですか?
式として評価するには、フォルダパスと実行可能ファイル名を取り入れた変数を作成する必要があると思います。次に、式として評価されるこの変数をのExecutableプロパティに割り当てる必要がありますExecute Process Task
。また、設計時に有効な実行可能パスが必要です。
これは、プロセス実行タスクの実行可能プロパティに変数を渡す方法を示す大まかなステップバイステップの例です。この例は、SSIS 2008 R2を使用して作成されており、機能を説明するために3つの.batファイルも使用しています。例はSSIS2008R2にありますが、ロジックはSSIS2005に適用できるはずです。
3つの.batファイル、つまりProcess_0.bat、Process_1.bat、およびProcess_2.batを作成します。スクリーンショット#1を参照してください。スクリーンショット#2-#4に示すように、echoコマンドを入力します。
SSISパッケージを作成します。最初にYYYYMMDD_hhmmの形式でパッケージに名前を付け、その後にSOはStack Overflowを表し、その後にSO質問ID、最後に説明が続きます。これは、後で簡単に参照できるようにするためのものです。スクリーンショット#5を参照してください。
次の変数を作成します。スクリーンショット#6を参照してください。
ExecutableFileName-この変数は文字列型です。実行可能ファイル名が含まれます。
ExecutableFolder-この変数は文字列型です。実行可能ファイルのフォルダパスが含まれます。
ExecutableFilePath-この変数は文字列型です。この変数には値を入力しないでください。これは、変数ExecutableFolderとExecutableFileNameを組み合わせて完全なファイルパスを生成する式になります。スクリーンショット#7を参照してください。変数を選択し、F4を押してプロパティウィンドウを開きます。EvaluateAsExpressionをTrue
に設定し、式をに設定します@[User::ExecutableFolder] + @[User::ExecutableFileName]
ExecutableOutput-この変数は文字列型です。実行可能ファイルの出力値を保存します。この場合、値は.batファイルによってエコーされます。
パッケージの制御フローパスに、スクリーンショット#8に示すように、プロセス実行タスクとスクリプトタスクを配置します。
スクリーンショット#9〜#11に示すように、プロセス実行タスクを構成します。タスクの[プロセス]セクションで、初期構成の実行可能パスを指定する必要があります。また、StandardOutputVariableを指定します(これはこの例の場合です)。[式]セクションで、変数@ [User :: ExecutablePath]を指定して、実行可能パスをオーバーライドします。
スクリプトタスクで、スクリーンショット# 12〜#13に示すようにMainメソッドを置き換えます。
パッケージを実行します。スクリーンショット#14に示すような出力が得られるはずです。これは、.batファイルProcess_0.batが出力とともに実行されたことを示しています"Process 0"
。
ここで、変数ExecutableFileNameの値をProcess_1.batに変更します。その他の変更は行わないでください。パッケージを実行します。スクリーンショット# 15〜#16に示すような出力が得られるはずです。これは、.batファイルProcess_1.batが出力とともに実行されたことを示しています"Process 1"
。
ここで、変数ExecutableFileNameの値をProcess_2.batに変更します。その他の変更は行わないでください。パッケージを実行します。スクリーンショット# 17〜#18に示すような出力が得られるはずです。これは、.batファイルProcess_2.batが出力とともに実行されたことを示しています"Process 2"
。
お役に立てば幸いです。
スクリーンショット:
#1:
#2:
#3:
#4:
#5:
#6:
#7:
#8:
#9:
#10:
#11:
#12:
#13:
#14:
#15:
#16:
#17:
#18:
私がこのコメントを書いている理由は、私が同様のエラーを抱えていたからです
Package Validation Error Error at @#@#@# [Execute Process Task]: The executable is not specified.
そして、私がしなければならなかったのは、VariableのEvaluateAsExpressionでTRUEを選択することだけです。参考までに、私の値の式は「C:\ PortableApps \ winscp517\WinSCP.exe」でした。
HTH!
このトピックは少し古いことは知っていますが、これがあなたのやり方です。
私の場合、バッチスクリプトを呼び出したいと思います。スクリプトのパスは、私がいる環境に基づいて変わります。だから私は、バッチスクリプトの正しいパスを設定する変数を持っています。また、引数用の別の変数もあります。これも地域に基づいて変化します。
プロセスタスクの「編集」に戻ると、実行可能ファイルと引数が自動入力されていることがわかります。