1

SQLジョブからC#コンソールアプリケーションを実行してみたいと思います。それで、それをテストするために、私は単にコンソールアプリケーションを作成し、C#とSMOを使用して、データベースを作成するために数行を書きました。正常に実行でき、期待どおりにSQLServerにデータベースが作成されます。

次に、IDEでクリックしましBuild-->Publish myProject to E:\myFolder\MakeNewDB24た。これは、SQLServerが存在する場所だからです。

上記のアクションにより、次のファイルが指定された場所、つまりE:\ myFolder\MakeNewDB24にコピーされました。

  • アプリケーションファイル
  • setup.exe
  • myProject.application

次に、SQL Serverを開き、によってジョブを作成しました rt. clicking Jobs Folder-->New Job。私は一般的にすべての情報を記入しました。ステップでは、私はコマンドの下にあります、

\\mySQLServer\myFolder\MakeNewDB24\setup.exe

Type: Operating System(CmdExec)
Run as: SQL Server Agent Service Account

私はその仕事をした。履歴を見ると「成功」と表示されていましたが、

Executed as user: mySQLServer\SYSTEM. The step did not generate any output.  Process Exit Code 0.  The step succeeded.

私は幸せでした。しかし、作成されるはずのデータベースを確認したところ、データベースが利用できませんでした。つまり、SQLJObがデータベースを作成する役割を果たしていませんでした。

ここで何が欠けているのかわかりませんか?誰かがこれについて知っているなら、親切に私と共有してください。私は本当に自分のSQLジョブがこの仕事をするのを見たいと思っています。SQLジョブを使用している理由は、すべての自動化タスクがここから始まるためです。ありがとう。

4

1 に答える 1

0

あなたの問題は、ほぼ確実にパーミッションに関係しています。SQL Server エージェント ジョブの実行に使用されるユーザー ID を確認する必要があります。私の推測では、どこかにアクセス許可がありません。

ジョブが成功を返す理由は、CMD ジョブが CMD 実行可能ファイルを正常に起動すると、常に成功を返すためです。コードが成功したかどうかとは関係ありません。

セキュリティを心配する必要がない環境では、すべてに管理者権限を与えるという不幸な習慣に陥っているため、どこでどの権限が必要かを心配する必要はありません。幸運を。

于 2012-05-24T20:03:10.240 に答える