Windows Server 2003 と SQL Server 2000 の環境で、ときどき設定したはずなのに SQL Server Agentサービスが起動していない現象がありました。サーバーなんてたまにしか再起動しないので、その度に自動起動の設定を忘れていたかな?くらいに軽く考えて、手動で起動させて事なきを得ていました。しかもこの現象は毎回必ず発生するわけではなく、本当に「ときどき」だったのです。
そもそも自動起動を設定しているサービスが起動に失敗するとイベントビューアにエラーが記録されるはずです。しかしエラーが記録されていないのでジョブ実行等の問題が発生するまで気付かないのです。
そんな中、今日も同現象の報告がお客さんからあり、マイクロソフトのサポート技術情報を検索してみましたが同様の情報には巡り会えず困っていたところ、ちょうどチャットでPASSJの「あの」河端さんに相談してみたところ、SQL Server開発者のブログで情報を発見してくれました。氏が以下にまとめてくれています。
SQL Server Agent が起動に失敗する : 「サービス EventLog は開始されていません」
- 河端善博 ブログ / SQL Server / PASSJ
結論からすると、SQL Server Agentのバグで、上記本文にあるように、EventLogサービスが起動していないためにAgentサービスの起動を行わなかった旨の勘違いエラーをSQL Agentのログファイルに残し、サービスの起動をあきらめてしまっているのです。また、EventLogサービスが起動していないと勘違いしている状態なので、当然イベントビューアに記録もないのです。
同開発者のブログによると、SQL Server 2008では改善されているものの、SQL Server 2000ではもう修正されないのかもしれません。対策として、サービスの起動を遅らせるか、リトライ処理を自作しろとあります。
河端氏に感謝します。また今度ビール飲みましょう。


コメントする