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

Zależności usług SQL

Termin Definicja
Zależności usług SQL

Zależności usług SQL Server determinują, które komponenty muszą działać, zanim uruchomi się dana usługa.

Jak rozumieć zależności usług SQL Server

Zależność usługi SQL Server oznacza relację, w której uruchomienie jednego składnika wymaga wcześniejszego uruchomienia innego składnika systemu Windows albo komponentu SQL Server. W praktyce trzeba rozróżnić zależność zdefiniowaną w Menedżerze sterowania usługami systemu Windows od zależności funkcjonalnej. Pierwsza jest zapisana w konfiguracji usługi i powoduje, że system próbuje uruchomić wymagane usługi przed usługą nadrzędną. Druga wynika z działania konkretnej funkcji, nawet jeśli nie jest zapisana jako formalna zależność w zakładce właściwości usługi.

Podstawową usługą jest SQL Server Database Engine. Dla instancji domyślnej jej nazwa systemowa to MSSQLSERVER, a dla instancji nazwanej używana jest nazwa w rodzaju MSSQL$KSIĘGOWOŚĆ. Usługa przechowuje i przetwarza bazy danych, obsługuje połączenia klientów oraz wykonuje zapytania Transact-SQL. SQL Server Agent jest osobną usługą: dla instancji domyślnej nosi nazwę SQLSERVERAGENT, natomiast dla instancji nazwanej może występować jako SQLAgent$KSIĘGOWOŚĆ. Agent wykonuje zadania, alerty i harmonogramy, ale jego uruchomienie nie oznacza, że wszystkie zadania będą działały, jeśli sam aparat baz danych pozostaje zatrzymany.

Usługi towarzyszące instancji i ich rzeczywista rola

SQL Server Browser jest usługą pomocniczą, która odpowiada za udostępnianie informacji o instancjach SQL Server działających na komputerze, w szczególności o portach używanych przez instancje nazwane. Jej zatrzymanie nie zatrzymuje działającej instancji Database Engine. Może jednak uniemożliwić klientowi automatyczne odnalezienie portu instancji nazwanej, gdy połączenie korzysta z nazwy serwera i instancji zamiast z jawnie wskazanego portu TCP. W takim przypadku połączenie może działać po podaniu adresu w formacie serwer,port, o ile zapora sieciowa i konfiguracja protokołu TCP/IP na to pozwalają.

SQL Server Agent korzysta z Database Engine do wykonywania zadań związanych z bazami danych, historii zadań, operatorów i alertów. Dlatego sprawna usługa agenta nie jest równoznaczna ze sprawnym harmonogramem kopii zapasowych lub konserwacji baz. Jeśli Database Engine nie przyjmuje połączeń, zadanie agenta może zakończyć się błędem logowania, błędem połączenia albo niepowodzeniem przy wykonaniu polecenia. Podobnie usługa SQL Server Integration Services, Analysis Services lub Reporting Services jest odrębnym składnikiem i nie powinna być automatycznie traktowana jako obowiązkowa zależność każdej instancji Database Engine.

W przypadku wyszukiwania pełnotekstowego występuje zależność funkcjonalna od usługi SQL Full-text Filter Daemon Launcher. Na Windows usługa ta ma nazwę zależną od instancji, na przykład MSSQLFDLauncher$KSIĘGOWOŚĆ. Uruchamia proces fdhost.exe, który obsługuje filtrowanie dokumentów i dzielenie tekstu na słowa. Gdy usługa nie działa, zapytania pełnotekstowe i operacje indeksowania pełnotekstowego nie będą działały prawidłowo, mimo że sam Database Engine może nadal przyjmować zwykłe zapytania SQL.

Sprawdzanie zależności bez zgadywania

Na komputerze z Windows zależności można obejrzeć w SQL Server Configuration Manager, w sekcji SQL Server Services, po otwarciu właściwości wybranej usługi. To narzędzie rozpoznaje usługi SQL Server i prawidłowo obsługuje część ustawień kont usług, dlatego jest właściwsze do konfiguracji SQL Server niż przypadkowa zmiana parametrów w konsoli Services. Warto sprawdzić zarówno kartę Dependencies, jak i status wszystkich usług powiązanych z funkcją, która faktycznie zgłasza błąd.

Do odczytu stanu usług można użyć poleceń systemowych. Przykładowo sc.exe query MSSQLSERVER pokazuje stan usługi instancji domyślnej, a sc.exe qc MSSQLSERVER wyświetla między innymi konfigurację uruchamiania i formalne zależności zapisane dla tej usługi. Dla instancji nazwanej trzeba podać dokładną nazwę, na przykład sc.exe query MSSQL$KSIĘGOWOŚĆ. W PowerShell można użyć polecenia Get-Service -Name 'MSSQLSERVER','SQLSERVERAGENT','SQLBrowser'. Przy nazwach zawierających znak dolara należy użyć odpowiedniego cudzysłowu, aby PowerShell nie potraktował nazwy jako wyrażenia z interpolacją.

Sam status „Running” nie potwierdza poprawnej pracy. Należy sprawdzić dziennik błędów SQL Server, Podgląd zdarzeń Windows oraz dzienniki SQL Server Agent. Błąd uruchomienia może wynikać z braku dostępu konta usługi do katalogu danych, dzienników lub plików systemowych, a nie z brakującej zależności. Przydatne jest także sprawdzenie, czy port TCP skonfigurowany dla instancji jest dostępny oraz czy klient używa właściwej nazwy instancji. Zatrzymywanie i uruchamianie usług bez sprawdzenia logów może tylko zaciemnić kolejność zdarzeń.

Znaczenie zależności przy diagnostyce i naprawie środowiska

Podczas diagnostyki najpierw ustala się, która funkcja nie działa: uruchomienie Database Engine, połączenie lokalne, połączenie zdalne, zadanie SQL Server Agent czy wyszukiwanie pełnotekstowe. Następnie porównuje się tę funkcję z wymaganymi usługami. Dla problemu z uruchomieniem instancji sprawdza się formalne zależności Windows, konto usługi, parametry startowe oraz dostęp do plików. Dla problemu z instancją nazwaną sprawdza się dodatkowo SQL Server Browser albo jawny port TCP. Dla błędu pełnotekstowego weryfikuje się usługę FDHOST Launcher, katalogi komponentu oraz stan katalogu pełnotekstowego.

Nie należy bez uzasadnienia ustawiać wszystkich usług SQL Server na automatyczny start. SQL Server Browser może być zbędny, gdy aplikacja korzysta z określonego portu, a SQL Server Agent nie jest potrzebny, jeśli środowisko nie używa zadań i alertów. Z drugiej strony wyłączenie usługi wymaganej przez konkretną funkcję może spowodować częściową awarię, której nie widać w prostym teście logowania do bazy. Prawidłowa naprawa polega na odtworzeniu wymaganej kolejności uruchamiania, poprawieniu konfiguracji usługi i potwierdzeniu działania funkcji testowym połączeniem lub kontrolowanym zadaniem.

W środowisku serwerowym diagnostykę warto zakończyć sprawdzeniem startu po restarcie systemu, połączenia lokalnego i zdalnego, działania używanych harmonogramów oraz komunikatów w dziennikach. Zależność usługi jest wtedy oceniana na podstawie rzeczywistego przepływu pracy, a nie wyłącznie na podstawie nazwy wpisu w konsoli usług. Pozwala to odróżnić awarię samego Database Engine od problemu z Browserem, Agentem, pełnym tekstem, siecią lub uprawnieniami konta usługi.

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