控制Windows服务的启动顺序

时间:2009-01-14 02:34:59

标签: sql windows-services autostart installutil

我使用installutil安装了一个Windows服务并设置为“Autostart”。我的问题是,当某些服务器重新启动时,它会尝试在“Microsoft SQL服务”启动之前启动 - 我可以通过查看系统重启期间的事件日志来看到这一点。在SQL服务器服务启动后,我的服务“自动启动”的最佳方法是什么?

我正在考虑创建一个SQL作业集,以便在“SQL Server代理”启动时启动,然后启动Windows服务。但希望有一种简单有效的方法来控制自动服务启动的顺序。

4 个答案:

答案 0 :(得分:5)

每个Windows服务都有一个依赖的其他服务列表。这意味着它会等到它的依赖关系在它尝试启动之前就已经开始了,如果它们在你的启动时没有自动启动它会为你启动它们。

如果您在.NET中创建Windows服务,那么这里有一篇博客文章可能会有所帮助:

How to: Code Service Dependencies

否则这里有一个Microsoft kb条目详细说明了通过注册表添加服务依赖项的方法:

How to delay loading of specific services

答案 1 :(得分:2)

您可以设置服务之间的依赖关系。

See here:

答案 2 :(得分:2)

如果您想使用批处理脚本执行此操作,则以下内容将有所帮助

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

这使用 reg.exe see here

答案 3 :(得分:2)

依赖性很诱人,但在SQL Server的情况下,可能会对系统的长期设计造成损害。考虑一下您的应用程序是否成功,并且您的客户希望移动到另一个盒子上的单独SQL服务器或故障转移群集。

更好的设计可能是在服务启动时加入一些重试/超时逻辑,这样它就会尝试联系SQL Server(甚至可能在另一台机器上),等待,尝试,然后优雅地失败。 / p>