Windows Systemstart & abhängige Dienste

13/08/2009 - 11:02 von Carsten | Report spam
Hallo,

wir entwickeln eine Applikation, die u.a. auf einigen Windows Diensten
basiert. Unsere Windows Dienste benötigen eine DB (Oracle oder MsSQL).

Damit nach dem Windows Systemstart alle Dienste richtig gestartet werden,
haben wir Abhàngigkeiten für unsere Dienste konfiguriert:

DienstA ist abhàngig von OracleServiceXE
DienstB ist abhàngig von DienstA

Damit DienstA korrekt startet, muss Oracle verfügbar sein, denn DienstA
meldet sich beim Start bei Oracle an. Oracle benötigt etwas lànger zum
hochfahren, darum spendieren wir unseren Diensten etwas Extrazeit
(ServiceBase.RequestAdditionalTime).

Wenn alle Dienste nun gestoppt sind und ich starte DienstB manuell, dann
werden erst Oracle, dann DienstA und dann DienstB korrekt gestartet.

Wenn aber alle Dienste auf Starttyp Automatisch stehen und Windows neu
gestartet wird, dann funktioniert es nicht. Im Eventlog erscheint dann
folgende Meldungen:

Der Dienst "DienstA" wurde nicht ordnungsgemàß gestartet. (Kennung 7022)

und

Der Dienst "DienstB" ist vom Dienst "DienstA" abhàngig, der aufgrund
folgenden Fehlers nicht gestartet wurde:
Der Dienst konnte nicht gestartet werden. (Kennung 7001).

Nach dem Login ist DienstA aber verfügbar! Nur DienstB ist nicht gestartet.

Kann sich jemand vorstellen warum das so ist? Bei manuellen Start
funktioniert es ja. Was ist der Unterschied zwischen dem manuellen Starttyp
und dem automatischen beim Systemstart?

Vielen Dank,
Carsten
 

Lesen sie die antworten

#1 Frank Dzaebel
22/08/2009 - 21:30 | Warnen spam
Hallo Carsten,

Wenn aber alle Dienste auf Starttyp Automatisch stehen und Windows neu
gestartet wird, dann funktioniert es nicht. Im Eventlog erscheint dann
folgende Meldungen: [...]



Evtl. ist für Euch ein verzögerter Start Eures Dienstes
eine Möglichkeit (normal etwa 2 Minuten nach Anmeldung).

[ChangeServiceConfig2 Function (Windows)]
http://msdn.microsoft.com/en-us/lib...81988.aspx

mit:
SERVICE_DELAYED_AUTO_START_INFO.fDelayedAutostart = true

Ist sowieso schon sinnvoll, wenn ein Dienst nicht für das
Einloggen notwendig ist.
_______________

BTW: in Windows 7 hat man u.a. die "Trigger Start Services"
zur Verfügung, bei denen die Dienste auf bestimmte
Ereignisse hin gestartet werden.

[SERVICE_TRIGGER_INFO Structure (Windows)]
http://msdn.microsoft.com/en-us/lib...05514.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen