簡體   English   中英

控制Windows服務的啟動順序

[英]Controlling start up sequence of a windows service

我使用installutil安裝了一個Windows服務並設置為“Autostart”。 我的問題是,當某些服務器重新啟動時,它會嘗試在“Microsoft SQL服務”啟動之前啟動 - 我可以通過查看系統重啟期間的事件日志來看到這一點。 在SQL服務器服務啟動后,使我的服務“自動啟動”的最佳方法是什么?

我正在考慮創建一個SQL作業集,以便在“SQL Server代理”啟動時啟動,然后啟動Windows服務。 但希望有一種簡單有效的方法來控制自動服務的啟動順序。

每個Windows服務都有一個依賴於其他服務的列表。 這意味着它將等待它的依賴關系在它嘗試啟動之前已經開始,並且如果它們在你的啟動時沒有自動啟動它將為你啟動它們。

如果您在.NET中創建Windows服務,這里有一篇博客文章可能會有所幫助:

如何:代碼服務依賴項

否則,這里有一個Microsoft kb條目,詳細說明了通過注冊表添加服務依賴項的方法:

如何延遲加載特定服務

如果您想使用批處理腳本執行此操作,則以下內容將有所幫助

REG ADD "HKLM\\SYSTEM\\CurrentControlSet\\Services\\%ServiceKey%" /v "DependOnService" /t REG_MULTI_SZ /d "Service Number 01\\0Service Number 02"

這使用reg.exe 看到這里

依賴性很誘人,但在SQL Server的情況下,可能會對系統的長期設計造成損害。 考慮您的應用程序是否成功並且您的客戶希望移動到另一個框上的單獨SQL服務器或故障轉移群集。

更好的設計可能是在服務啟動時加入一些重試/超時邏輯,這樣它就會嘗試聯系SQL Server(甚至可能在另一台機器上),等待,嘗試,然后優雅地失敗。

您可以設置服務之間的依賴關系。

看這里:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM