Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ожидание запуска FireBird'a [D7, FireBird]


Цукор5 ©   (2009-07-15 13:02:00) 

Добрый день.
Каким образом узнать, что 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.Может в чем-то другом проблема ? Заранее низкий поклон !!!


StriderMan   (2009-07-22 16:30:00) [1]

сталкивались с подобной проблемой. Сервис FB бодро рапортует что уже стартовал, а коннект отваливается с ошибкой. После долгих поисков решений сделали несколько попыток старта с настраиваемым таймаутом.


Цукор5   (2009-07-21 14:59:00) [2]


> а почему сервер стартует каждую ночь? Дебилизм.


Во первых не каждую, а во вторых потому что свет иногда выключают.
И в-третьих какое отношение [9] имеет к сабжу ?


Mike Kouzmine   (2009-07-20 23:14:00) [3]

а почему сервер стартует каждую ночь? Дебилизм.


Anatoly Podgoretsky   (2009-07-15 14:40:00) [4]

Проблема точно не связана и нечего ждать, поскольку служба уже стартовала, чего еще надо.


sniknik   (2009-07-15 14:13:00) [5]

> Т.е. моего кода достаточно ?
твой код тут совершенно не при чем. да и не нужен службе, если используется только для того чтобы определить можно ли уже работать с сервером фаребирда, у них есть стандартный "оповещатель" - зависимости.

> Проблема только в том, что я не сделал программу службой ?
скорее всего нет, т.к.
> Служба стартовала, но нет связи.
проблема скорее всего вообще не связана с проверкой запущенности службы файрбирда.

делать программу службой нужно по другому поводу, а именно для того чтобы работать "до входа в систему". т.е. до логина и запуска юзерского интерфейса.


Цукор5   (2009-07-15 14:01:00) [6]


> sniknik ©   (15.07.09 13:37) [4]
> ну и не забыть выставить ей зависимость от службы фаребирда


Т.е. моего кода достаточно ? Проблема только в том, что я не сделал программу службой ?


Цукор5   (2009-07-15 13:59:00) [7]


> Игорь Шевченко ©   (15.07.09 13:28) [3]
> > Но даже если после этого запустить основную программу
> связи > с БД неткак именно нет связи ?


unavailable database


sniknik   (2009-07-15 13:37:00) [8]

> как заставить работать программу до входа в систему
до входа в систему работают только службы. т.е. программу нужно сделать службой, или запустить как службу.
ну и не забыть выставить ей зависимость от службы фаребирда, хотя это и не относится к вопросу в цитате.


Игорь Шевченко   (2009-07-15 13:28:00) [9]


> Но даже если после этого запустить основную программу связи
> с БД нет


как именно нет связи ?


Цукор5   (2009-07-15 13:13:00) [10]


> Медвежонок Пятачок ©   (15.07.09 13:11) [1]
> У тебя ответ содержится в вопросе:Служба стартовала, но
> нет связи.При этом бессмысленно спрашивать как дождаться
> запуска ФБ, так как служба уже стартовала.


Толком ничего не понял. Поставлю вопрос по другому...как заставить работать программу до входа в систему(т.е. служба только стартовала). Чего еще ждать ?


Медвежонок Пятачок   (2009-07-15 13:11:00) [11]

У тебя ответ содержится в вопросе:

Служба стартовала, но нет связи.

При этом бессмысленно спрашивать как дождаться запуска ФБ, так как служба уже стартовала.


Наверх

Титульная страница Поиск, карта сайта Написать письмо