Windowsサービスが再起動後に自動的に起動しないのですか?


10

.NETで記述されたWindowsサービスがいくつかあります。サービスmmc内で手動で正常に起動しますが、自動に設定されているにもかかわらず、マシンの電源を投入(または再起動)しても起動しません。

更新イベントログで、「xyzが開始されました」と表示される代わりに、他のすべてのサービスが開始されているのと同じように、「xyzサービスが停止状態になりました」と表示されます。また、「slsvcサービスからのトランザクション応答を待機中にタイムアウト(30000ミリ秒)に達しました。」という別のエラーが発生しました。

それらを手動で開始すると、期待どおりにイベントログに通常のエントリが表示されます。再起動を強制し、すべてのサービスを再びオフにする次のWindows Updateパッチまで、すべて正常です。

何か案は?私はそれらを遅延開始に設定してみましたが、明らかな違いはありません。


スケジュールされたいくつかのタスクで非常によく似た問題がありました。結局、タスクが実行されたときのユーザー名を作成後に変更することで再作成できることがわかりました。タスクを削除して再作成するだけで問題を簡単に修正できることがわかりました。これと同様のアプローチの価値は間違いなくあります。サービスを削除して再作成してみてください。これは、それを行う方法がわからない場合に役立ちます。ちなみに、スケジュールされたタスクの問題はもう発生していません。ある時点でいくつかの更新により修正されたと思います。
DaveRandom

別のサービス(まだ開始されていない)に依存しているため、開始に失敗したのではないかと思います。システムログ内でサービス開始の失敗を確認できますか?
newmanth

@DaveRandom新しいバージョンをデプロイするたびに再インストールが実際に発生するため、残念ながら削除/追加で問題が解決するようには見えません
James Crowley

@newmanth質問がいくつかの新しい詳細で更新されました
James Crowley

Robの回答に対するあなたのコメントで、.NETが唯一の依存関係であることに気付きました。開発者がサービスの開発でサードパーティのAPIを使用したかどうかを知っていますか?もしそうなら、おそらくブロックされているいくつかのライセンスメカニズムがありますか?
newmanth 2012年

回答:


3

その修正があります。参照:http : //support.microsoft.com/kb/922918

問題は、サービスがLDAPまたは別のリモートアクセスを必要とする可能性があり、このために遅延が発生していることです。これは特に、サーバーの起動時に発生する可能性があります。遅延を延長することで、サービスを確実に開始できます。

もちろん、このサービスの開始に時間がかかる理由をトラブルシューティングすることをお勧めします。あなたの環境は未利用ですか?開始が遅れているサービスによってポーリングされているサービスでパフォーマンスの問題が発生しましたか?


サービス開始はどのように具体的にトラブルシューティングできますか?詳細なログを有効にする方法はありますか?
ケニーエビット2014年

1

「Windowsサービスがいくつかあります」とはどういう意味ですか?それはあなたの組織内の誰かによって内部的に作成されたと私に示唆していますか?もしそうなら、ここで他の誰よりもそれらをデバッグするより良い位置にいます-これらのサービスはWindowsコンポーネントにどのような依存関係を持ち、プログラマーはこれらのサービスの可用性のテストを検討し、サービスの開始時にそれらがオンラインになるのを待っていますか? ?

これらのサービスをソフトウェアライセンスサービスの依存関係として設定することを検討しましたか(それがslsvcです)。

http://support.microsoft.com/kb/193888から

新しい依存関係を作成するには、遅延するサービスを表すサブキーを選択し、[編集]をクリックして、[値の追加]をクリックします。REG_MULTI_SZのデータ型で新しい値の名前 "DependOnService"(引用符は除く)を作成し、[OK]をクリックします。[データ]ダイアログボックスが表示されたら、このサービスの前に開始するサービスの名前を1行に1つずつ入力し、[OK]をクリックします。

[データ]ダイアログボックスに入力するサービスの名前は、Servicesキーの下のレジストリに表示されるサービスの正確な名前です。

コンピューターが起動すると、このエントリを使用して、依存サービスを開始する前に、この値にリストされているサービスが開始されていることを確認します。


Robに感謝します。これらは内部的なものですが、唯一の依存関係は.NETフレームワークであり、サービスとして実行されるとは思いません。起動時に他に何も必要ありません...
James Crowley

0

これで試してください:

次のコマンドを実行して、環境に適したトリガーイベントを定義します。この例では、コマンドはホストにIPアドレスが付与されているかどうかを判別し、サービスを開始または停止します。

sc triggerinfo w32time start / networkon stop / networkoff

ここで、w32Timeはサービス名です

またはこれを試してください

https://support.microsoft.com/en-us/kb/922918

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.