2009-01-14 15 views
5

Mam zainstalowaną usługę Windows przy użyciu installutil i ustawioną na "Autostart". Mój problem polega na tym, że gdy niektóre serwery są restartowane, próbuje się uruchomić, zanim uruchomi się "usługa Microsoft SQL" - widzę to, patrząc na dziennik zdarzeń podczas restartu systemu. Jaki jest najlepszy sposób na wykonanie usługi "auto start" Po uruchomieniu usługi serwera SQL?Sterowanie sekwencją uruchamiania usługi systemu Windows

Rozumiem pomysł utworzenia zestawu zadań SQL, który rozpocznie się, gdy uruchomi się "agent serwera SQL", który z kolei uruchomi usługę Windows. Miejmy nadzieję, że istnieje łatwy i skuteczny sposób kontrolowania kolejności uruchamiania usług automatycznych.

Odpowiedz

5

Każda usługa Windows ma listę innych usług to zależy. Oznacza to, że poczeka, aż uruchomią się jego zależności, zanim spróbuje uruchomić, i uruchomi je, jeśli nie zostały uruchomione automatycznie po uruchomieniu.

Jeśli tworzysz swoje usługi Windows w .NET, istnieje blogu tutaj, które mogą być pomocne:

How to: Code Service Dependencies

W przeciwnym razie istnieje wpis kb Microsoft tutaj szczegóły sposobu dodawania zależności serwisowych za pomocą rejestru:

How to delay loading of specific services

+0

Dziękuję. To działało świetnie. Dodałem klasę instalatora - przeszedłem do właściwości i dodałem zależność do usługi "MSSQLSERVER". Wydaje się działać. Zastanawiam się, czy nazwa usługi pozostanie taka sama dla SQL Server 2005, 2008 .. – Bijimon

+0

Co się stanie, jeśli użytkownik chce uruchomić SQL Server w scentralizowanym klastrze pracy awaryjnej, czy tylko w innym oknie? – onupdatecascade

+0

@matthamilton górny link jest zerwany –

2

Można ustawić zależności między usługami.

See here:

2

Jeśli chcesz to zrobić ze skryptu wsadowego następnie dodaje pomoże

REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\%ServiceKey%" /v "DependOnService" /t REG_MULTI_SZ /d "Service Number 01\0Service Number 02"

używa Reg.exesee here

2

Zależności są kuszące, ale w przypadku SQL Server może być szkodliwe w dłuższej perspektywie projektowania systemu. Zastanów się, czy Twoja aplikacja odniosła sukces, a Twoi klienci chcą przenieść się do oddzielnego serwera SQL na innym polu lub do klastra pracy awaryjnej.

Lepszym projektem może być umieszczenie logiki ponownej/czasowej podczas uruchamiania usługi, aby próbował on skontaktować się z serwerem SQL (może nawet na innej maszynie), poczekać, spróbować, a następnie zakończyć się niepowodzeniem.

Powiązane problemy