Sql 控制windows服务的启动顺序

Sql 控制windows服务的启动顺序,sql,windows-services,autostart,installutil,Sql,Windows Services,Autostart,Installutil,我使用installutil安装了windows服务,并将其设置为“Autostart”。我的问题是,当一些服务器重新启动时,它会尝试在“Microsoft SQL服务”启动之前启动—我可以通过在系统重新启动期间查看事件日志看到这一点。Sql server服务启动后,使我的服务“自动启动”的最佳方法是什么 我想创建一个SQL作业集,当“SQLServer代理”启动时启动,然后启动windows服务。但希望有一种简单有效的方法来控制自动服务的启动顺序。您可以设置服务之间的依赖关系 每个Window

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


我想创建一个SQL作业集,当“SQLServer代理”启动时启动,然后启动windows服务。但希望有一种简单有效的方法来控制自动服务的启动顺序。

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


每个Windows服务都有一个它所依赖的其他服务的列表。这意味着它将等到其依赖项启动后再尝试启动,如果在启动您的依赖项时它们没有自动启动,它将为您启动它们

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

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


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

REG添加“HKLM\SYSTEM\CurrentControlSet\Services\%ServiceKey%”/v“DependOnService”/t REG\u MULTI\u SZ/d“服务编号01\0服务编号02”


这使用了reg.exe

依赖项很诱人,但在SQL Server的情况下,可能会对系统的长期设计有害。考虑一下你的应用程序是否成功了,你的客户想要移动到另一个盒子上的一个单独的SQL服务器,或者去一个故障转移群集。
更好的设计可能是在服务启动时加入一些重试/超时逻辑,这样它将尝试联系SQL Server(甚至可能在另一台机器上),等待,尝试,然后优雅地失败。

谢谢。这很有效。我添加了安装程序类-转到属性,并向“MSSQLSERVER”服务添加了依赖项。似乎有效。不知道SQL server 2005、2008的服务名称是否会保持不变。如果用户希望在集中式故障转移群集上运行SQL server,或者只是在另一个框中运行SQL server,会发生什么情况?@mattmilton顶部链接为broken@DuncanGroenewald网络的危险。遗憾的是,当URL仅仅是博客文章时,它们不能保证是永久性的(现在修好了。