Управление последовательностью запуска службы Windows - PullRequest
5 голосов
/ 14 января 2009

У меня установлена ​​служба Windows с помощью installutil и установлено значение «Автозапуск». Моя проблема в том, что когда некоторые серверы перезагружаются, он пытается запуститься до запуска «службы Microsoft SQL» - я могу увидеть это, просматривая журнал событий при перезагрузке системы. Каков наилучший способ заставить мой сервис "автозапуск" после запуска службы сервера Sql?

Мне нравится идея создания задания SQL, которое запускается при запуске «агента сервера SQL», что, в свою очередь, запускает службу Windows. Но, надеюсь, есть простой и эффективный способ контролировать порядок запуска автоматических служб.

Ответы [ 4 ]

5 голосов
/ 14 января 2009

У каждой службы Windows есть список других служб, от которых она зависит. Это означает, что он подождет, пока его зависимости не запустятся, прежде чем попытается запуститься, и запустит их для вас, если они не запускались автоматически при запуске вашей.

Если вы создаете службу Windows в .NET, здесь может быть полезна запись в блоге:

Как: кодировать сервисные зависимости

В противном случае здесь есть запись Microsoft kb, в которой подробно описан способ добавления служебных зависимостей через реестр:

Как отложить загрузку определенных услуг

2 голосов
/ 18 октября 2010

Зависимости заманчивы, но в случае с SQL Server это может быть вредно для долгосрочного проектирования вашей системы. Подумайте, будет ли ваше приложение успешным, и ваши клиенты захотят перейти на отдельный сервер SQL на другом компьютере или в отказоустойчивый кластер.

Лучшим вариантом может быть использование некоторой логики повторов / тайм-аутов при запуске вашей службы, чтобы она пыталась связаться с SQL Server (возможно, даже на другом компьютере), подожди, попробуй, затем изящно провалилась. 1003 *

2 голосов
/ 11 мая 2010

Если вы хотите сделать это с помощью пакетного скрипта, то следующее поможет

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

Используется reg.exe см. Здесь

2 голосов
/ 14 января 2009

Вы можете установить зависимости между сервисами.

Смотрите здесь:

...