2009-01-14 145 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(甚至可能在另一台计算机上),等​​待,尝试,然后优雅地失败。