-
Цукор5 (15.07.09 13:02) [0]Добрый день.
Каким образом узнать, что FireBird стартовал и готов к работе ?
У меня ситуация следующая...Win2003 стартует, появляется окно логина/пароля(происходит это ночью, когда никого нет). В это время через планировщик запускается программа, которая проверяет готовность службы FireBird. И если служба готова, то запускается основная программа.
Код отрабатывает правильно, т.е. видно, что служба стартовала.
Но даже если после этого запустить основную программу связи с БД нет.
function ServiceStatus(MachineName, ServiceName: string): dword;
var
Mgr, Svc: integer;
Status: SERVICE_STATUS;
begin
Result := 0;
Mgr := OpenSCManager(PChar(MachineName), nil, SC_MANAGER_ALL_ACCESS);
if Mgr <> 0 then begin
Svc := OpenService(Mgr, PChar(ServiceName), SERVICE_QUERY_STATUS);
if Svc <> 0 then begin
if QueryServiceStatus(Svc, Status) then Result := Status.dwCurrentState;
CloseServiceHandle(Svc);
end
else
RaiseLastOSError;
CloseServiceHandle(Mgr);
end;
end;
...
if ServiceStatus('','FireBirdServerDefaultInstance') = SERVICE_RUNNING then
begin
ShellExecute...
end;
Подскажите...каким же образом проверить и дождаться запуска FireBird.Может в чем-то другом проблема ? Заранее низкий поклон !!! -
Медвежонок Пятачок © (15.07.09 13:11) [1]У тебя ответ содержится в вопросе:
Служба стартовала, но нет связи.
При этом бессмысленно спрашивать как дождаться запуска ФБ, так как служба уже стартовала. -
Цукор5 (15.07.09 13:13) [2]
> Медвежонок Пятачок © (15.07.09 13:11) [1]
> У тебя ответ содержится в вопросе:Служба стартовала, но
> нет связи.При этом бессмысленно спрашивать как дождаться
> запуска ФБ, так как служба уже стартовала.
Толком ничего не понял. Поставлю вопрос по другому...как заставить работать программу до входа в систему(т.е. служба только стартовала). Чего еще ждать ? -
Игорь Шевченко © (15.07.09 13:28) [3]
> Но даже если после этого запустить основную программу связи
> с БД нет
как именно нет связи ? -
> как заставить работать программу до входа в систему
до входа в систему работают только службы. т.е. программу нужно сделать службой, или запустить как службу.
ну и не забыть выставить ей зависимость от службы фаребирда, хотя это и не относится к вопросу в цитате. -
Цукор5 (15.07.09 13:59) [5]
> Игорь Шевченко © (15.07.09 13:28) [3]
> > Но даже если после этого запустить основную программу
> связи > с БД неткак именно нет связи ?
unavailable database -
Цукор5 (15.07.09 14:01) [6]
> sniknik © (15.07.09 13:37) [4]
> ну и не забыть выставить ей зависимость от службы фаребирда
Т.е. моего кода достаточно ? Проблема только в том, что я не сделал программу службой ? -
> Т.е. моего кода достаточно ?
твой код тут совершенно не при чем. да и не нужен службе, если используется только для того чтобы определить можно ли уже работать с сервером фаребирда, у них есть стандартный "оповещатель" - зависимости.
> Проблема только в том, что я не сделал программу службой ?
скорее всего нет, т.к.
> Служба стартовала, но нет связи.
проблема скорее всего вообще не связана с проверкой запущенности службы файрбирда.
делать программу службой нужно по другому поводу, а именно для того чтобы работать "до входа в систему". т.е. до логина и запуска юзерского интерфейса. -
Anatoly Podgoretsky © (15.07.09 14:40) [8]Проблема точно не связана и нечего ждать, поскольку служба уже стартовала, чего еще надо.
-
Mike Kouzmine (20.07.09 23:14) [9]а почему сервер стартует каждую ночь? Дебилизм.
-
Цукор5 (21.07.09 14:59) [10]
> а почему сервер стартует каждую ночь? Дебилизм.
Во первых не каждую, а во вторых потому что свет иногда выключают.
И в-третьих какое отношение [9] имеет к сабжу ? -
StriderMan (22.07.09 16:30) [11]сталкивались с подобной проблемой. Сервис FB бодро рапортует что уже стартовал, а коннект отваливается с ошибкой. После долгих поисков решений сделали несколько попыток старта с настраиваемым таймаутом.