2009-01-14 12 views
5

Tengo un servicio de Windows instalado usando installutil y configurado en "Inicio automático". Mi problema es que cuando se reinician algunos servidores intenta iniciarse antes de que se inicie el "servicio de Microsoft SQL". Puedo ver esto mirando el registro de eventos durante un reinicio del sistema. ¿Cuál es la mejor manera de hacer que mi servicio "arranque automáticamente" DESPUÉS de que el servicio del servidor Sql haya comenzado?Control de la secuencia de inicio de un servicio de Windows

Estoy jugando con la idea de crear un conjunto de trabajos SQL para que comience cuando comience el "agente de SQL Server" que a su vez inicia el servicio de Windows. Pero, con suerte, existe una forma fácil y efectiva de controlar el orden en que se inician los servicios automáticos.

Respuesta

5

Cada servicio de Windows tiene una lista de otros servicios que depende. Eso significa que esperará hasta que sus dependencias hayan comenzado antes de que intente iniciarse, y las iniciará por usted si no se iniciaron automáticamente cuando se inicia el suyo.

Si va a crear el servicio de Windows en .NET, hay una entrada de blog aquí que podría ser útil:

How to: Code Service Dependencies

De lo contrario hay una entrada kb Microsoft aquí que detalla una forma de agregar dependencias de servicio a través del registro:

How to delay loading of specific services

+0

Gracias. Eso funcionó muy bien. Agregué la clase de instalador - fui a propiedades y agregué una dependencia al servicio "MSSQLSERVER". Parece funcionar. Me pregunto si el nombre del servicio seguirá siendo el mismo para SQL Server 2005, 2008 .. – Bijimon

+0

¿Qué sucede si el usuario desea ejecutar SQL Server en un clúster de conmutación por error centralizado, o simplemente en otro cuadro? – onupdatecascade

+0

@matthamilton el enlace superior está roto –

2

Puede establecer dependencias entre los servicios.

See here:

2

Si desea hacer esto con un script por lotes a continuación, el siguiente le ayudará

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

Este utiliza REG.EXEsee here

2

Las dependencias son tentador, pero en el caso de SQL Server pueden ser perjudiciales para el diseño a largo plazo de su sistema. Considere si su aplicación tiene éxito y si sus clientes desean pasar a un servidor SQL diferente en otra caja, o a un clúster de conmutación por error.

Un mejor diseño podría ser poner algo de lógica de reintentos/tiempo de espera en el inicio de su servicio, para intentar contactar al Servidor SQL (quizás incluso en otra máquina), esperar, intentar y luego fallar con elegancia.

Cuestiones relacionadas