Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

SC.exe – zarządzanie zależnościami

Termin Definicja
SC.exe – zarządzanie zależnościami

Zarządzanie zależnościami przez sc.exe pozwala określić kolejność uruchamiania usług powiązanych z SQL Server.

Rola SC.exe w kolejności uruchamiania usług SQL Server

Program sc.exe jest narzędziem systemu Windows służącym do komunikacji z Menedżerem sterowania usługami, czyli Service Control Manager. W kontekście SQL Server może zostać użyty do zapisania zależności usługi silnika bazy danych od innych usług systemowych. Zależność oznacza, że wskazana usługa musi zostać uruchomiona wcześniej, aby Menedżer sterowania usługami rozpoczął uruchamianie usługi SQL Server. Mechanizm dotyczy kolejności startu usług, a nie kolejności wykonywania zapytań, inicjalizacji baz danych ani sprawdzania, czy aplikacja korzystająca z SQL Server jest już gotowa do pracy.

Dla instancji domyślnej usługa silnika SQL Server nosi zwykle nazwę MSSQLSERVER. Instancja nazwana używa nazwy w formacie MSSQL$NazwaInstancji. Te nazwy są nazwami usług Windows, dlatego należy posługiwać się nimi przy poleceniach sc.exe, a nie nazwą wyświetlaną w dokumentacji aplikacji lub etykietą widoczną w skrócie programu. Błędna nazwa usługi może spowodować modyfikację niewłaściwego wpisu albo komunikat o nieistniejącej usłudze.

Składnia parametru depend= i zapis zależności

Konfigurację zależności można zmienić poleceniem sc.exe config. Przykładowa postać dla instancji domyślnej wygląda następująco: sc.exe config MSSQLSERVER depend= NazwaUslugi. W tej składni odstęp po znaku równości jest wymagany przez program sc.exe. W przypadku kilku zależności nazwy usług rozdziela się ukośnikiem, na przykład sc.exe config MSSQLSERVER depend= UslugaA/UslugaB. Podane nazwy muszą odpowiadać nazwom usług systemowych, a niekoniecznie ich nazwom opisowym wyświetlanym w konsoli Usługi.

Informacja o zależności jest przechowywana w konfiguracji usługi Windows jako wartość DependOnService. Zależność od usługi oznacza relację jednokierunkową: SQL Server jest usługą zależną, a wskazana usługa jest jej poprzednikiem. Podczas zatrzymywania Menedżer sterowania usługami uwzględnia odwrotną kolejność, aby najpierw zatrzymać usługę zależną, a dopiero później usługę, od której zależała. Nie należy traktować parametru depend= jako mechanizmu kontroli zależności między bazami, zadaniami SQL Server Agent albo obiektami aplikacyjnymi.

Weryfikacja konfiguracji przed zmianą

Przed zmianą warto odczytać aktualną konfigurację poleceniem sc.exe qc MSSQLSERVER. Wynik zawiera między innymi nazwę usługi, typ uruchamiania, konto używane przez usługę, ścieżkę obrazu wykonywalnego oraz sekcję zależności. Do sprawdzenia usług, które zależą od wskazanej usługi, służy polecenie sc.exe enumdepend MSSQLSERVER. Są to dwa różne kierunki analizy: qc pokazuje, od czego zależy SQL Server, natomiast enumdepend pokazuje, które usługi zależą od wybranej usługi.

Przy analizie należy rozróżnić nazwę usługi od nazwy wyświetlanej i od nazwy procesu. Nazwę techniczną można sprawdzić między innymi w wynikach sc.exe query albo w właściwościach usługi Windows. Dla instancji nazwanej trzeba użyć pełnej nazwy zawierającej prefiks MSSQL$. Warto również ustalić, czy wskazywana usługa rzeczywiście jest wymagana przez konfigurację danego komputera. Dodanie zależności od usługi wyłączonej, usuniętej lub niedostępnej może uniemożliwić automatyczne uruchomienie silnika SQL Server, mimo że sam plik wykonywalny i bazy danych są sprawne.

Zmiana konfiguracji usługi wymaga uprawnień administratora. Po wykonaniu polecenia należy ponownie odczytać konfigurację i sprawdzić dziennik zdarzeń systemu Windows oraz dziennik błędów SQL Server. Sama obecność usługi w stanie „Uruchomiono” nie dowodzi jeszcze, że można nawiązać poprawne połączenie z instancją. Kontrola powinna obejmować także właściwą nazwę instancji, protokół połączenia, port oraz działanie klienta, który zgłasza problem.

Granice mechanizmu i bezpieczna diagnostyka

Zależność zapisana przez sc.exe kontroluje moment rozpoczęcia uruchamiania usług, ale nie zapewnia gotowości funkcjonalnej poprzednika. Usługa może otrzymać stan uruchomienia, zanim zakończy własną inicjalizację albo zanim udostępni wymagany interfejs. Z tego powodu dodawanie zależności nie zastępuje analizy komunikatów z Podglądu zdarzeń, logów SQL Server, konfiguracji SQL Server Browser ani ustawień zapory sieciowej. Nie rozwiązuje też problemów wynikających z uszkodzonej bazy systemowej, błędnych uprawnień konta usługi, zajętego portu lub niezgodnej konfiguracji klienta.

Usunięcie zależności wykonuje się również przez sc.exe config, jednak przed takim działaniem trzeba znać pełną dotychczasową listę wpisów. Nadpisanie parametru bez zachowania potrzebnych zależności może zmienić zachowanie usługi po restarcie systemu. Po modyfikacji należy wykonać kontrolowane zatrzymanie i uruchomienie usługi, a następnie sprawdzić, czy silnik SQL Server przyjmuje połączenia oraz czy zależne aplikacje działają prawidłowo. Diagnostyka i naprawa takiej konfiguracji wymaga pracy na konkretnych nazwach usług, logach oraz ustawieniach danego komputera; sama komenda nie jest uniwersalnym rozwiązaniem każdego problemu z uruchamianiem SQL Server.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę