タスクスケジューラより起動するバッチのエラー?とそのリカバリー方法について
環境情報
OS:WindowsServer2012R2
DB:SQLServer2014
DBサーバーにはリモートデスクトップで接続し、管理者権限は都度取得。
背景
0. 別システムから渡されたデータをためておき、2時間ごとにSQLSeverにデータをインポートする。
0. データは、毎回同じ名前なため、インポートをスキップすると上書きされてしまう。
0. データに問題がある場合などで、インポートができなかった場合は、別途エラーメッセージをメールで発生させているので、その都度リカバリーしていた。
0. 1か月に1回程度の頻度で、インポートプログラムでエラーが発生し、取り込みが行えなくなっている。
0. インポートプログラムはC#で開発。プログラムの改修は難しいが、mappingやconfigを回収することで部分的には可能。
エラー内容
(1).NET_Runtimeエラー
- Provider
[ Name] .NET Runtime - EventID 1026
[ Qualifiers] 0
Level 2
Task 0
Keywords 0x80000000000000
- TimeCreated
[ SystemTime] 201X-XX-XXT17:11:32.000000000Z
EventRecordID 29114
Channel Application
Computer XXXXX.com
Security
- EventData
アプリケーション:XXXXImpoter.exe
フレームワークのバージョン:v4.0.30319
説明: ハンドルされない例外のため、プロセスが中止されました
例外情報:System.Data.SqlClient.SqlException
スタック: 場所 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(~長いため省略いたします)
(2)Application_Error
- System
- Provider
- EventID 1000
Level 2
Task 100
Keywords 0x80000000000000- TimeCreated
EventRecordID 29115
Channel Application
Computer XXXXX.com
Security - EventData
XXXXImpoter.exe
1.0.0.0
56e779f0
KERNELBASE.dll
6.3.9600.18202
569e72bb
e0434352
00015b68
73a14
01d2de1e90dd4709
F:\batchpg\bin\XXXXImpoter.exe
C:\Windows\SYSTEM32\KERNELBASE.dll
0b62217a-4a12-11e7-80c8-00505699054a
質問
0. エラー原因を把握したい。
0. 簡単に解決できるなら、エラーが発生しないようにしたい。
0. インポートプログラム自体にエラーが発生したときの早期発見をしたい。
0. 可能なら自動リカバリー方法を知りたい。
考慮済みの対応策
0. メール通知
・タスクにエラーイベントを登録し、エラー時にメールを送る。
⇒WindowsServer2012R2には失われた機能だったため×
0. エラーリカバリー
・タスクにエラーイベントを登録し、エラー発生をスイッチに再実行する。
⇒エラーの原因が特定できていないため、再実行しても再度エラーが出る可能性がある。
⇒エラーがずっと出続けると、何度も再実行することになり危険。
0. 余分に実行
・別システムからの引き受けデータの発生頻度は、最短2時間に1回なため、2時間に2回取り込みを行えば取り漏れの可能性が減る。
⇒1時間に1回にした時の空回しは無駄ではないか。
⇒1/360で発生とすると、(1/360)^2なので、約30年に1回の発生頻度になる。
⇒ただしエラー原因によってはもっと確率が高かったり、近い時間は更にエラーが発生しやすい可能性もある。
⇒結局確実ではない。
条件
0. プログラム改修に関しては極力変更は避けたい(プログラミング能力の低い自分には、コメント有り・設計書無しのコード解析は厳しい)。
0. サーバ内で動作保証の無い(WinS2012R2だと殆どないと思う)フリーソフトは原則使わない(セキュリティの観点のみならず、管理者権限の問題による)。
求めている目標
・一番の目標はエラーなくインポートが完了できることですが、リアルタイム性がそこまで重視されているわけではないため、エラーへのリカバリーができれば問題ないと考えております。最低限、エラーが発生した場合が通知を受け、手動リカバリーでもよいと考えています。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/12 08:12 編集
2017/07/27 10:42