Как синхронизировать доступ службы Windows к базе данных SQL Server при запуске? - PullRequest
0 голосов
/ 04 мая 2010

У меня есть служба WCF, которая работает как служба Windows. Как только служба WCF запускается, она пытается подключиться к БД и выполнить некоторую обработку инициализации.

У меня проблема при перезагрузке компьютера (служба wcf настроена на автоматический запуск), служба получит исключение, так как слишком sql занят. Таким образом, кажется, что sql пытается запустить, и в то же время мой сервис пытается связаться с ним.

На данный момент я сделал что-то вроде try / catch, и я сплю в течение 10 секунд в своем улове, и я повторяю попытку, пока моя инициализация не будет успешной.

Это работает довольно хорошо. Но я ищу более элегантное решение.

Я не хочу устанавливать зависимость от SQL на моей службе Windows, так как служба может быть установлена ​​на другой машине, чем БД.

1 Ответ

1 голос
/ 04 мая 2010

Вы можете попытаться настроить параметры " Recovery " вашей службы, когда вы развернете ее, чтобы она перезапускалась сама, когда она не загружается. Это можно сделать с помощью инструмента командной строки SC.EXE, WMI или вручную через свойства службы (services.msc MMC).

Попытка [n] раз, с некоторым интервалом между попытками, до окончательного сбоя, если все еще не удается подключиться, не является плохим решением, если вы рассматриваете мониторинг и оповещение.

Служба, на самом деле не запускающая , запишет события предупреждения / ошибки в журнал событий Windows, потенциально вызывая поведение мониторинга и оповещения, которое может не потребоваться, если его просто ожидает зависимость, и это в конечном итоге восстановится.

НТН,

Z

...