2

psftp.exe を使用してリモート サーバーに接続し、ファイルを削除する前にそこからファイルを取得することを目的とした、コマンド プロンプトで作成したコマンドがあります。コマンドプロンプトで実行すると、完全に機能します。これを SQL エージェント ジョブのコマンド ウィンドウに入れて実行しようとすると、ハングします。コマンドを見ると、これを引き起こすものはありますか?

実行可能ファイルがプロンプトを表示すると、この動作が発生すると聞いたことがありますが、もちろん psftp.exe はそうではないので、これが問題だとは思いません。

完全な管理者権限を持つローカル ユーザーの下でジョブを実行しています。

ジョブのコマンドは、psftp.exe のコマンドを読み取るためにテキスト ファイルを開くことを付け加えておきます。このためのコマンドも含めました。

メイン CmdExec コマンド:

W:\Software\psftp\psftp.exe -pw password1 -b W:\Software\psftp\Retrieval.txt -batch account@123.123.123.123

テキスト ファイル psftp.exe コマンド

cd out
lcd "C:\Documents and Settings\MyUser\My Documents\"
mget /out/*.txt
rm /out/*txt
quit
4

2 に答える 2

1

ここでの問題は 2 つあります。1 つ目は、SQL エージェント ジョブが運用サーバーの「サービス」アカウントで実行されていたことです。これは、サービスの実行などに使用されるサーバー上の別のユーザー アカウントです。それ自体は問題ではありませんが、説明するように根本的な原因でした。

要件の解決策を考えているときに、最初に PSFTP.exe を手動で実行したとき (管理者が疎結合の説明として読んでください)、レジストリにキーを追加するように求められました。私はこれに注意を払わなかったので、プロセスを自動化したいと思うようになったとき、私は遅れをとっていました。コマンドラインを介してデバッグしている間、ほとんどの場合ローカルユーザーで実行していたので、問題はありませんでした。バッチ ファイルなどを SQL Agent ジョブに配置しようとしたとき、このようなジョブには常に「サービス」ユーザー アカウントを使用するため、実行していたユーザーを効果的に変更しました。もちろん、このユーザーには、外部 sFTP サーバーへの接続用のレジストリ キーが追加されていません。

この問題を解決するには、別のユーザーで (「サービス」アカウントでマシンにログインすることにより) PSFTP.exe プログラムを手動で実行し、レジストリ キーを追加する必要がありました。これを行った後、SQL エージェント ジョブは正常に実行されました。このような単純なことですが、もちろん、例外やログが表示されなかったため、多くの頭痛の種になりました。

于 2012-12-28T10:01:54.927 に答える
0

パスワードの問題のような単純なものでしょうか?イベントログを確認しましたか? ここにイベント ログ レポートを投稿できますか?

于 2012-12-17T12:28:18.173 に答える