SQL Serverエージェント経由でスケジュールされたジョブからバッチファイルを実行する方法


12

SQL Server 2008 R2でSQL Serverエージェントジョブ内から(Windows)バッチファイルを実行しようとしています。ジョブステップで、新しいステップを作成し、そのタイプを「オペレーティングシステム(CmdExec)」に設定しました。最初に、「コマンド」フィールドにバッチファイル名のみを入力しようとしました。ファイルが見つからないというエラーが発生します。

次に試しました:cmd.exe c:\ test.bat

これは開始されますが、決して完了しません(実際に動作しているようには見えません)。

バッチファイル名を引用符で囲みました:cmd.exe "C:\ test.bat"ですが、それでも違いはありません。

これを機能させるための魔法の組み合わせは何ですか?


「ファイルが見つかりません」というエラーが表示されたときに、完全なパスを使用していましたか?ワークステーションだけでなく、実行中のサーバーでパスは有効ですか?バッチファイル内のパスは絶対ですか?
すべての取引のジョン

はい、フルパスを使用しています。それを実行しているサーバー上の正しいパスです。バッチファイルは単なるテストに過ぎません:echo> C:\ temp \ itworks.txt
Paul Mrozowski

回答:


11

メモリが正しく機能する場合:

cmd.exe /c "c:\test.bat"

パスまたはファイル名にスペースがある場合は引用符が必要です


1

同様に、ジョブエージェントサービスに使用される権限を確認します。サービスを実行しているユーザーにファイルを表示する権限がない可能性があります。

幸運を


0

そのドライブとフォルダーの場所でバッチファイルを実行する権限があることを確認します。

手動で実行すると資格情報が使用されますが、SQL Agentによって自動的に実行される場合は、エージェントの資格情報と権限が使用されることを忘れないでください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.