2009-01-14 142 views
5

的順序我已經使用installutil安裝一個Windows服務,並設置爲「自動啓動」。我的問題是,當某些服務器重新啓動時,它會在「Microsoft SQL服務」啓動之前嘗試啓動 - 我可以通過在系統重新啓動期間查看事件日誌來看到這一點。在Sql服務器服務啓動後,使服務「自動啓動」的最佳方式是什麼?控制啓動Windows服務

我與創建一個SQL工作將要開始的想法玩弄時「SQL Server代理」開始,在依次啓動Windows服務。但希望有一種簡單而有效的方式來控制自動服務啓動的順序。

回答

5

每個Windows服務具有的其他服務的列表它取決於。這意味着它會一直等到它的依賴項已經啓動,然後它會嘗試啓動它,如果它們在你啓動時沒有自動啓動,它會爲你啓動。

如果你在.NET中創建您的Windows服務,有一個博客張貼在這裏可能會有所幫助:

How to: Code Service Dependencies

否則有一個Microsoft知識庫進入這裏,詳細介紹了添加服務依賴性通過註冊表:

How to delay loading of specific services

+0

謝謝。這很好。我添加了安裝程序類 - 去了屬性,並添加了一個依賴到「MSSQLSERVER」服務。似乎工作。不知道是否該服務的名稱會留爲SQL Server 2005,2008 .. – Bijimon 2009-01-14 03:47:18

2

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

See here:

2

如果你想用一個批處理腳本來做到這一點那麼下面將幫助

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

它使用REG.EXEsee here

2

依賴是誘人的,但在SQL Server的情況下,可能會損害您的系統的長期的設計。考慮您的應用程序是否成功,您的客戶想要移到另一個盒子上的單獨SQL服務器還是故障轉移羣集。

更好的設計可能是在服務啓動時放置一些重試/超時邏輯,以便它會嘗試聯繫SQL Server(甚至可能在另一臺計算機上),等​​待,嘗試,然後優雅地失敗。