ジョブ管理にJP1を使用する事になり、既存のジョブの切替(SQL Agent⇒JP1/AJS2)を行っているが、
JP1からジョブを実行すると、挙動が変わる事象がいくつか発生した。

≪FTP≫
バッチファイル内でFTPを実行(FTPコマンド自体はテキストファイルを指定)している処理がある。
でも%ERRORLEVEL%では、FTPコマンド内のエラー値等が格納されないので、FTPの実行結果を
ログファイルに出力して、VBScriptでログファイルの中身をチェックして、エラーコードが
含まれていないか調べている。

ここで重要なのが、ログファイルに含まれるFTPからのレスポンスコード(3桁の数字)なのだが、
これを出力するには、「饒舌/詳細モード」というモードがOnになっている必要がある。
饒舌/詳細モードは、FTP実行時に”-v”オプションを指定もしくは、”verbose”コマンドを実行することで、
”<i><u><strong>切替</strong></u></i>”が可能になる。
また、饒舌/詳細モードはデフォルトはOnになっているので、通常であれば意識せずにFTPを実行すれば、
レスポンスコードが出力される。

しかし、JP1から実行すると饒舌/詳細モードがOffになってしまい、レスポンスコードが出力されない。
その為、JP1から実行する場合は、モードを切替えてあげる必要がある。

実用的な対応方法としては、バッチファイルに饒舌/詳細モードを切替えるフラグパラメータを追加して、
単体実行時は、饒舌/詳細モードの切替なし(-vオプションの指定なし)で実行し、JP1からの実行時には、
切替フラグを立ててやり、-vオプションを指定して実行するのが良いと思う。

@補足事項@
なお、上記のケースとは別に、VBScriptからFTPコマンドを実行しているプログラムがあるのだが、
その場合は、饒舌/詳細モードはデフォルトのOnのままで実行されていた。
よって、直接バッチファイル実行のケースだけ、この事象が発生するようだ。

≪ds***系≫
詳細な原因究明が出来ていないが、dsadd、dsmod等のAD操作系のコマンドを実行するバッチファイルを
JP1から実行すると、実行権限がないユーザーで実行してエラーになるケースと同様のエラーになってしまい、
実行が出来ないという事象が発生した。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です