Вводная: На одном сервере есть две службы - сервер баз
данных и приложение (в виде службы) которое обращается к базе данных.
Столкнулся с тем, что служба БД запускается позже, чем
приложение и в итоге программа висит с ошибкой подключения (переписать
приложение не вариант).
Решение: Есть два способа
1) Поставить в свойствах службы тип запуска
"Автоматически (отложенный запуск)". Система запускает такие службы
только после того, как запущены все службы, настроенные на автоматический
запуск. Запуск отложенных служб осуществляется с самым низким приоритетом, что
позволяет сэкономить ресурсы компьютера при загрузке этих служб.
Но у этого решения есть свой минус - если есть три службы А, зависимая Б и любая сторонняя В. И нам надо сделать запуск Б, только после А. У А и В тип запуска "Автоматически", предположим, что левая служба В зависла при запуске. Тогда даже при работающей А и возможным запуском Б, Б не будет запущена, так как будет ожидать запуск службы В.
2) Более корректный способ это поставить службу приложения в
зависимость от службы БД. Теперь служба будет ждать запуска именно сервера БД и
сразу после него стартовать сама.
Делается это через командную строку -
sc config ИмяСлужбыПриложения depend= ИмяСлужбыБД/ все
дополнительные зависимости, перечисленные через / прямой слеш
Причём после "depend=" должен быть обязательно
пробел!
Посмотреть зависимости (и прочие параметры) можно
sc qc ИмяСлужбыПриложения
Комментариев нет:
Отправить комментарий