CmdExec
ステップの実行をテストするジョブを作成しました。ジョブステップは、コマンドとしてdir
を使用してバッチファイルを実行するだけです。
ジョブはSQL Serverサービスアカウントとして実行されています。このアカウントは、SQL ServerのsysadminとWindowsの管理者の両方です。ログインには、マスターのxp_cmdshellへのexecも付与されています。サーフェス構成では、XPCmdShellEnabled = True
。クエリウィンドウからコマンドを実行すると、期待どおりに実行されます。
質問:なぜジョブステップエラーがまだ発生するのですか?これは、SP2がインストールされたSQL Server 2008 R2の単純なVanillaインストールです。ここで空想は何も起こっていません。
注:私はこれがどれほどひどく安全でないかを知っていますが、ここで私がこれを欠いてこのエラーを解決しようとするためにここに来ました。言うまでもなく、これは機能させることができず、BOLを使用すると簡単に聞こえます。
この投稿は古いようですが、誰かがこの問題に遭遇した場合に備えて、何か投稿したいと思いました。他の誰か( http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=35882 )も同様の問題を抱えていましたが、ジョブの所有者をsa(どうやら、ジョブの所有者はユーザーでした)そしてそれは働きました。 「SQLAgentCmdExecをリセットする方法」についての@Taraの投稿を見つけました。これがOPの問題かどうかはわかりません。
では、CMDEXECジョブステップを使用する代わりに、バッチファイル名を完全な文字列に置き換えたt-SQLスクリプトステップに戻しました。
EXEC xp_cmdshell 'c:\dircommand.bat'
そしてそれは動作します。そのため、オペレーティングシステムのジョブステップの問題が何であるかはわかりませんが、この時点でハードルを通過しました。おかしいことは、私は別のサーバーを別の方法でセットアップしていて、それがうまく機能することです。援助の申し出をありがとう。