2009-05-26 51 views
3

FTPサーバーからファイルをダウンロードしてデータをインポートする.dtsxファイル(SSISパッケージ)があります。それは私が手動でそれを実行するたびに正常に実行されます。ただし、パッケージをSQL Serverエージェントジョブのステップとして呼び出すようにスケジュールすると、失敗します。それが失敗するステップは、私が.batファイルを呼び出すステップです。ジョブ履歴ビューアのエラーは次のようになります。SQLジョブのステップとして呼び出されたときにSSISパッケージが実行されない

Error: 2009-05-26 12:52:25.64
Code: 0xC0029151 Source: Execute batch file Execute Process Task
Description: In Executing "D:\xxx\import.bat" "" at "", The process exit code was "1" while the expected was "0". End Error DTExec: The package execution returned DTSER_FAILURE (1).

私はこれは権限の問題だと思いますが、これを解決する方法がわかりません。ジョブの所有者は管理者ユーザーなので、.batファイルが置かれているディレクトリへのアクセス許可があることを確認しました。私はサービスに入り、SQL Serverエージェントの "ログオン"オプションを変更しようとしましたが、いずれのオプションも機能しませんでした(ローカルシステムアカウントとこのアカウント)。誰かがこれを動作させるために他のアクセス許可を調整する必要があるかどうかについてのアイデアはありますか?

答えて

1

バッチファイルだけをSQLジョブステップとして実行しようとしましたが、より詳細な情報が得られました。それは私が.batファイルと同じディレクトリにある実行可能ファイルを呼び出そうとしたときに失敗したことを示していましたが、そこから実行されていたwindows/system32ディレクトリにはありませんでした。

私は実行ファイルをsystem32ディレクトリに移動しましたが、私のファイルがどこにダウンロードされているのかわかりませんでした。それから、WorkingDirectoryというProcess Execタスク(.batを実行するタスク)のプロパティがあることがわかりました。これをバットが置かれているディレクトリに設定し、実行ファイルを.batファイルと同じものに戻して、現在は期待どおりに動作しています。

+0

SQLジョブでバッチファイルだけを呼び出す場合のステップタイプとは何ですか? – SearchForKnowledge

1

バッチファイルでSSISジョブを実行していますか、またはバッチファイルがSSISコントロールフローのステップですか?

私はこの答えの後者を想定しています。バッチファイルを実行するためにどのタスクを使用していますか(たとえば、単純実行プログラムタスクまたはスクリプトタスク)。後者の場合、SSISスクリプトではなく、バッチファイルが実際にはいくつかのステップで失敗しているように見えます。あなたのバッチファイルがアクセスしようとしているもののパーミッションを確認したいと思います。

実際、バッチファイルをSSISのスクリプトタスクとして書き直す方が良いでしょう。それはスクリプトのどのステップが失敗するかを教えてくれるでしょう)。

コマンドウィンドウでrunasコマンドを使用すると、バッチファイルを実行できます。ローカルシステムまたはネットワークシステムアカウントで試して実行すると、より良いエラーが表示されます。エラーが発生した場合は、 "echo%ERRORLEVEL%"に移動してエラーレベルを確認できます。

後者ではなく、バッチファイルでSSISパッケージを実行している場合、なぜですか?

+0

バッチファイルはSSISのステップで実行されます。プロセス実行タスクです。 コマンドウィンドウから実行すると、バッチファイルが正常に実行されます。 SSISパッケージを手動で実行すると、正常に実行されます。これは、問題が権限と関係していると思うのはなぜですか、おそらくMSSQLAGENTですか? – Pamela

+0

runasコマンドを使用してバッチファイルを実行していますか?SSISを実行しているサーバーにリモートで移動していますか? これは、SSISが実行する権限で実行する必要があります。 Visual StudioでSSISパッケージを実行すると、同じエラーが表示されますか? – Dane

+0

あなたの助けに感謝、デーン!私はいくつかのトラブルシューティングを行い、SQLジョブの一歩としてバッチファイルを実行しました。そして、より有用なエラーメッセージが表示されました。そこから、私は問題を理解することができました! (私のメッセージを参照してください。) – Pamela

0

マップされたドライブを.batファイルにアクセスしている可能性はありますか?その場合は、サービス内からマップされたドライブに依存することはできませんので、UNCパスを使用する必要があります。

+0

いいえ、.batファイルはマップされたドライブにありません。 – Pamela

2

私にとっては、権限の問題でした。環境 - >ディレクトリに移動し、ローカルディレクトリをSQLAgentUserがアクセスできるものに変更します。私はC:\ tempを使いました。 [保存]のドロップダウンをクリックし、[デフォルトを設定]を選択します。

+0

環境 - >ディレクトリはどこですか? – toha

0

私は同じエラーがあり、ジョブを実行するユーザーアカウントにログオンし、そこに問題のCoreftpサイトを開いてサイトのアクセスをテストし、そこに変更を加えました(私のケースでは、新しいパスワード)と今それが動作します。 はい、ファイルアクセスの問題です。これは問題のcoreftpサイトへのファイルアクセスです。

関連する問題