プロセスタスクを含むSSISパッケージがあります。プロセスタスクはバッチファイルを実行する必要があります。バッチファイルの場所は、環境(開発、本番)によって異なります。
Process TaskオブジェクトのExecutableプロパティの値をユーザー変数に動的に設定するにはどうすればよいですか?
式として評価するには、フォルダパスと実行可能ファイル名を取り入れる変数を作成する必要があると思います。次に、式として評価されるこの変数をExecute Process Task
の実行可能プロパティに割り当てる必要があります。また、設計時に有効な実行可能パスが必要です。
これは、プロセスタスクの実行のExecutableプロパティに変数を渡す方法を示す大まかなステップバイステップの例です。この例は、SSIS 2008 R2を使用して作成され、機能を説明するために3つの.batファイルも使用しています。例はSSIS2008 R2にありますが、ロジックはSSIS2005に適用できるはずです。
3つの.batファイル、つまりProcess_0.bat、Process_1.bat、およびProcess_2.batを作成します。スクリーンショットを参照#1。スクリーンショットに示すように、エコーコマンドを入力します#2 --#4。
SSISパッケージを作成します。最初にYYYYMMDD_hhmmの形式でパッケージに名前を付け、その後にSOはスタックオーバーフローを表し、次に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]を指定して、実行可能パスをオーバーライドします。
スクリプトタスクで、スクリーンショットに示されているようにMainメソッドを置き換えます#12 --#1。
パッケージを実行します。スクリーンショットに示すような出力が得られるはずです#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!