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

SQL Server Service Dependencies

Termin Definicja
SQL Server Service Dependencies

Service Dependencies określają, jakie inne usługi muszą działać, zanim uruchomi się dany komponent SQL Server.

Rola zależności usług w architekturze SQL Server

SQL Server Service Dependencies to zależności zapisane w systemie Windows, które określają kolejność uruchamiania usług związanych z daną instancją SQL Server. Menedżer usług Windows, czyli Service Control Manager, nie uruchamia usługi całkowicie niezależnie od środowiska. Jeżeli usługa ma zadeklarowaną zależność od innej usługi, najpierw sprawdzany jest stan wymaganej usługi. Dopiero po jej poprawnym uruchomieniu system może przejść do uruchamiania kolejnego komponentu.

W przypadku SQL Server trzeba odróżnić zależność systemową od ogólnego warunku działania. Zależność systemowa jest formalnym wpisem konfiguracji usługi Windows. Warunek działania może natomiast wynikać z konfiguracji instancji, uprawnień konta usługi, dostępności plików baz danych, certyfikatów, sieci albo ustawień zapory. Sam fakt, że dwa komponenty współpracują, nie oznacza jeszcze, że jeden z nich został wpisany jako zależność w Service Control Manager.

Database Engine, SQL Server Agent i SQL Server Browser

Najważniejszą usługą instancji jest SQL Server Database Engine. Dla instancji domyślnej jej nazwa systemowa to MSSQLSERVER, natomiast dla instancji nazwanej używany jest schemat MSSQL$NazwaInstancji. SQL Server Agent ma odpowiednio nazwy SQLSERVERAGENT dla instancji domyślnej oraz SQLAgent$NazwaInstancji dla instancji nazwanej. Agent wykonuje zadania, alerty i harmonogramy, ale jego działanie jest związane z dostępnością konkretnego aparatu Database Engine, z którym ma współpracować.

SQL Server Browser jest odrębną usługą Windows o nazwie SQLBrowser. Udostępnia informacje o instancjach SQL Server działających na komputerze, w szczególności pomaga klientom ustalić port używany przez instancję nazwaną. Browser nie jest jednak wymagany do każdego połączenia. Jeżeli klient zna konkretny port i używa go bezpośrednio, połączenie może działać bez tej usługi, o ile pozwalają na to zapora i konfiguracja protokołu TCP/IP. Zatrzymanie Browsera może natomiast powodować problemy z połączeniami wykorzystującymi nazwę instancji bez jawnego wskazania portu.

Odczyt i interpretacja konfiguracji zależności

Konfigurację można sprawdzić w SQL Server Configuration Manager albo w narzędziach administracyjnych Windows. W wierszu poleceń pomocne jest polecenie sc.exe qc MSSQLSERVER dla instancji domyślnej. Dla instancji nazwanej należy użyć jej rzeczywistej nazwy usługi, na przykład sc.exe qc MSSQL$SQLEXPRESS. Wynik zawiera między innymi pole DEPENDENCIES, w którym Windows pokazuje usługi wymagane przed uruchomieniem wskazanego komponentu.

W PowerShell można odczytać podstawowy stan usługi poleceniem Get-Service -Name MSSQLSERVER, a zależności sprawdzić przez właściwość ServicesDependedOn, na przykład w formie (Get-Service -Name MSSQLSERVER).ServicesDependedOn. Warto pamiętać, że nazwa wyświetlana w konsoli usług nie zawsze jest taka sama jak nazwa systemowa. Pomylenie MSSQLSERVER z MSSQL$NazwaInstancji może prowadzić do analizy niewłaściwej instancji.

Podczas interpretacji wyniku nie należy ograniczać się do samej listy zależności. Trzeba również sprawdzić typ uruchamiania usługi, konto przypisane do usługi, stan protokołów sieciowych oraz komunikaty w dzienniku systemowym i w dzienniku SQL Server. Usługa może mieć spełnione zależności Windows, a mimo to zakończyć start błędem z powodu niedostępnego katalogu danych, nieprawidłowych uprawnień, zajętego portu, uszkodzonego pliku systemowej bazy danych albo problemu z certyfikatem używanym przez szyfrowanie połączeń.

Diagnostyka nieudanego startu i skutków błędnej kolejności

Jeżeli SQL Server Agent uruchamia się przed dostępnością Database Engine albo nie może połączyć się z właściwą instancją, zadania zaplanowane w Agencie nie zostaną wykonane prawidłowo. Taki objaw może wyglądać jak problem z harmonogramem, choć rzeczywista przyczyna leży w stanie usługi silnika, nazwie instancji lub konfiguracji połączenia. Podobnie niedostępny SQL Server Browser może powodować błędy odnajdywania instancji nazwanej, mimo że sam Database Engine działa i nasłuchuje na skonfigurowanym porcie.

Bezpieczna diagnostyka polega na ustaleniu, która usługa zakończyła start jako pierwsza, jaki kod błędu zwrócił Windows oraz co zapisano w pliku ERRORLOG SQL Server. Następnie należy porównać tę informację z konfiguracją zależności odczytaną dla konkretnej instancji. Nie powinno się dopisywać przypadkowych usług do zależności tylko po to, aby wymusić określoną kolejność. Taka zmiana może zamaskować problem z konfiguracją i utworzyć cykliczną zależność, przez którą usługi nie uruchomią się wcale.

Jeżeli problem dotyczy komputera używanego lokalnie, analiza powinna uwzględniać także wpływ aktualizacji Windows, zmian kont usług, reguł zapory i zmian portów TCP/IP. W środowisku, w którym SQL Server jest elementem infrastruktury serwerowej, naprawa wymaga zachowania istniejącej konfiguracji, wykonania kopii ustawień przed zmianą oraz sprawdzenia, czy po restarcie kolejność uruchamiania jest powtarzalna. Sama ręczna zmiana kolejności uruchamiania w konsoli usług nie zastępuje prawidłowego ustalenia zależności konkretnej instancji.

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