| 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 ServerSQL 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 BrowserNajważniejszą usługą instancji jest SQL Server Database Engine. Dla instancji domyślnej jej nazwa systemowa to SQL Server Browser jest odrębną usługą Windows o nazwie Odczyt i interpretacja konfiguracji zależnościKonfigurację można sprawdzić w SQL Server Configuration Manager albo w narzędziach administracyjnych Windows. W wierszu poleceń pomocne jest polecenie W PowerShell można odczytać podstawowy stan usługi poleceniem 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ściJeż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. |