いつもお世話になっています、今回はWindowsServer2012でのエラーメッセージ(Application Error、.NET Runtime)について、教えてください。
前提
2台のWindowsServer2012(仮想サーバーなので実質1台)に、SQLServer2014と、Webアプリをそれぞれ実装しています。
その中で、SQLServer側にタスクスケジューラとして、毎日帳票出力のバッチを起動するタスクがセットされています。
このタスクは毎日18時に起動して、トリガーされた後に、1時間ごとに無期限に繰り返します。
ただし、このタスクスケジューラは、毎時起動には成功しているようですが、バッチファイルが実行されていないように見えます。
イベントビューアーのログを見てみると、2016/03/25 0:00:00より毎時二つのエラーが発生していました。
レベル:エラー ソース:.NET Runtime イベントID:1026 タスクのカテゴリ:なし
レベル:エラー ソース:Application Error イベントID:1000 タスクのカテゴリ:(100)
なぜ、このタイミングからエラーによって失敗しているのかが分かりません。
原因の一つとして考えられるのは、前任者が前日(2016/03/24)に、
「自分がいなくなるからサーバーバッチ起動用のIDとパスを設定しておいたから」
という言葉が気になっています。
プログラム自体はその前日まで走っていたものなので、想定ではプログラムの方は問題ないはずです。
次際にタスク側を見てみると、
タスクの実行時に使うユーザーアカウントが、バッチ用のアカウントに変更されています。
(ユーザーがログオンしているかどうかにかかわらず実行する、パスワードを保存しないにチェックが入っています)
まず、何が問題なのかを切り分けようと思っているのですが、他のチェック項目を変更したり、
ユーザーアカウントを変更したりしても結果が変わりませんでした。
実現したいこと
・どのような切り口で、問題を特定すればよいでしょうか?
・また、原因がプログラムで無い場合はどのように修正したらよろしいでしょうか?
前置きが無くなりましたが、よろしくお願いします
発生している問題・エラーメッセージ
- System
- Provider
[ Name] .NET Runtime
- EventID 1026
[ Qualifiers] 0
Level 2
Task 0
Keywords 0x80000000000000
- TimeCreated
[ SystemTime] 2016-03-24T15:00:00.000000000Z
EventRecordID 6342
Channel Application
Computer ServerName.xx.xxxx.com
Security
- EventData
アプリケーション:Ap_BatchApp.exe フレームワークのバージョン:v4.0.30319 説明: ハンドルされない例外のため、プロセスが中止されました。例外情報:System.UnauthorizedAccessException スタック: 場所 System.IO.__Error.WinIOError(Int32, System.String) 場所 System.IO.File.InternalDelete(System.String, Boolean) 場所 System.IO.File.Delete(System.String) 場所 Ap_BatchApp.Utils.LogManager.SetUp() 場所 Ap_BatchApp.Program.Main(System.String[])
- System
- Provider
[ Name] Application Error
- EventID 1000
[ Qualifiers] 0
Level 2
Task 100
Keywords 0x80000000000000
- TimeCreated
[ SystemTime] 2016-03-24T15:00:01.000000000Z
EventRecordID 6343
Channel Application
Computer ServerName.xx.xxxx.com
Security
- EventData
Ap_BatchApp.exe
1.0.0.0
56cbfa20
KERNELBASE.dll
6.3.9600.17055
532943a3
e0434352
00011d4d
1be4
01d185ddd669f45c
C:\ApBatch\Ap_BatchApp.exe
C:\Windows\SYSTEM32\KERNELBASE.dll
1523eaf9-f1d1
補足情報(言語/FW/ツール等のバージョンなど)
C#/ASP.NET Framework 4.5/ ASP.NET MVC 5.2.3/ VisualStudio Pro
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
情報:System.UnauthorizedAccessException
なんかの権限違反らしいっすね。
場所 System.IO.File.Delete(System.String)
場所 Apri_BatchApp.Utils.LogManager.SetUp()
ファイル削除で落ちてる?
LogManager.Setupってんだから昔のログファイルを消そうとしてる?
いずれにせよそこらへんのフォルダに対して今のユーザにアクセス権限あるかどうかを最初にチェックしてみては?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
続報というか、他にも問題はありそうなので、追記しておきます。
・ファイルを直接編集・保存できない
バッチファイルの中身を調査し、内容に不適切な個所があったので、修正して保存しようとしたところ上書き保存ができませんでした。
理由:ファイルのデータオーナーが前任者になっていたため
対応方法:ファイルのプロパティ→セキュリティの詳細設定→変更で所有者を自身にしてOK
※これが正式な方法なのかはわかりませんが、自分はこれでできるようになりました
・エラーは出なくなったが、実行結果がエラーになるときがある
1時間ごとに起動するタスクスケジューラによって、バッチファイルを開始させていますが、タスク自体は実行されているものの、処理が正しく行われていないようです。
となると、やはりプログラム側(バッチファイルに限らず)が問題なのかなと思います。
手動でバッチを起動するときは実行結果は正しくなるのですが、昨日設定した夜間バッチは残念ながらエラーが帰ってきてしまってました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/03/29 17:00
やはり権限違反なのですね。
まずは、権限に関して確認させていただきます。
2016/03/29 17:32 編集
開発環境では、別な管理者権限を持つアカウントが存在しており、そのアカウントでタスクを起動していますが、こちらが正常にバッチ処理が行えないのはまた別件のようです。
本番環境が修正できたので、開発環境は合間を見ながら確認してみます。
あとまだしっかり理解はできていないのですが、なぜ日が変わるタイミングで突如できなくなったのかがわかっていません。
この内容は正しくは理解できていませんが、おそらくタスクスケジュールが18時スタートではあるもの、前タスクの有効期限が無期限なので、日が変わるまではアカウントの更新がかからないということなのかなと、自分で推測してみました。
間違っていましたらご指摘いただけると幸いです。