3

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

エラー: 2009-05-26 12:52:25.64
コード: 0xC0029151 ソース: バッチ ファイルの実行 プロセスの実行タスク
の説明: "" で "D:\xxx\import.bat" "" を実行中、プロセスの終了コードは "1" でした" 一方、期待値は "0" でした。終了エラー DTExec: パッケージの実行で DTSER_FAILURE (1) が返されました。

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

4

5 に答える 5

2

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

于 2012-08-23T14:25:22.787 に答える
1

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

実行可能ファイルをsystem32ディレクトリに移動しましたが、ファイルがどこにダウンロードされているのかわかりませんでした。次に、WorkingDirectoryと呼ばれるプロセス実行タスク(.batを実行するタスク)のプロパティがあることがわかりました。これをbatが配置されているディレクトリに設定し、実行可能ファイルを.batファイルと同じディレクトリに戻したところ、期待どおりに機能するようになりました。

于 2009-05-28T00:00:51.300 に答える
1

バッチ ファイルで SSIS ジョブを実行していますか、それともバッチ ファイルは SSIS 制御フローのステップですか?

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

実際、バッチ ファイルを SSIS のスクリプト タスクとして書き直すことをお勧めします。これにより、エラー レポートが大幅に改善されます (スクリプトのどのステップが失敗したかがわかります)。

コマンド ウィンドウで runas コマンドを使用して、バッチ ファイルを実行してみてください。ローカル システムまたはネットワーク システム アカウントで実行しようとすると、より適切なエラーが発生するはずです。エラーが発生した場合は、「echo %ERRORLEVEL%」でエラー レベルを確認できます。

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

于 2009-05-27T01:38:48.947 に答える
0

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

于 2009-05-27T01:45:44.610 に答える