Usługi w SQL Server czyli Configuration Manager

Dziś chciałbym napisać parę słów na temat usług systemowych związanych z SQL Server. Temat już wielokrotnie był poruszany zarówno na różnego rodzaju konferencjach jak i na blogach, mimo to nieraz sprawia on niemałe problemy.

Na samym wstępie warto zaznaczyć, że SQL Server jest systemem dlatego też związanych z nim jest wiele usług systemowych, a nie tylko jedna. Każdy kto miał kiedykolwiek do czynienia z Windows ten wie, że w ramach systemu tego typu zazwyczaj działa bardzo wiele usług. Z poziomu systemu operacyjnego możemy zarządzać usługami m.in poprzez aplet Usługi – aby go uruchomić najprościej wybrać następującą kombinację:

Z poziomu SQL Server dobrą praktyką jest zarządzanie usługami z poziomu SQL Server Configuration Manager. Narzędzie to pozwoli nam zarządzać prawie wszystkim tym co potrzebujemy w związku z SQL Server (istnieją oczywiście wyjątki – więcej szczegółów w dalszej części artykułu). Dlaczego należy używać SQL Server Configuration Manager? Ponieważ w wersji SQL Server 2005 szyfrowanie haseł dla kont usługowych zostało zmienione, co za tym idzie gdy zmienimy hasło w services.msc zamiast w Configuration Manager usługa SQL Server w ogóle się nie uruchomi!

Zanim zaczniemy pracę z usługami, musimy zdawać sobie sprawę z tego kto i na jakich zasadach ma mieć prawo do zarządzania nimi. Zadanie to może wydawać się trywialne, jednak po głębszej analizie jest ono kluczowe, ponieważ ten kto ma dostęp do usług systemowych ten tak naprawdę ma dostęp do wszystkich zasobów związanych z SQL Server.

Gdy mamy gotowy plan dostępowy do usług możemy uruchomić SQL Server Configuration Manager. Aby to zrobić należy z menu start wybrać interesujące nas narzędzie znajdujące się w węźle Configuration Tools tak jak zostało to przedstawione na poniższym zrzucie ekranowym.

sql-server-configuration-manager-access

Po otwarciu SQL Server Configuration Manager powinniśmy zobaczyć aplet jak poniżej:

configuration-manager-overview

Configuration Manager posiada bardzo prosty w obsłudze interfejs składający się z pięciu zakładek:

  •       SQL Server services –  zakładka przeznaczona do uruchamiania, zatrzymywania usług, wskazywania konta na którym usługa ma działać oraz trybu w jakim ma być ona uruchamiana (do wyboru mamy sposób automatycznego uruchamiania usługi przy starcie systemu lub sposób ręczny)
  •       SQL Server Network Configuration (32 bit) – 32 bitowa wersja zakładki związanej z ustawieniami sieciowymi naszej instancji
  •       SQL Native Client 11.0 Configuration (32 bit) – w tym miejscu możemy ustawić protokoły oraz aliasy

Pozostałe dwie zakładki są 64-bitowymi odpowiednikami powyższych. Pierwszą rzeczą na jaką zwrócimy uwagę w opisywanym narzędziu jest nazwa usługi. Większość usług w swojej nazwie oprócz niewymagającej wytłumaczenia części w nawiasie zawiera instancję w ramach której dana usług jest uruchomiona. Przykładem może tutaj być SQL Server Agent, który może być zainstalowany na jednym serwerze kilkakrotnie, osobno dla każdej instancji. Wyjątkiem od tej reguły jest usługa Integration Services oraz SQL Server Browser, które są współdzielone pomiędzy instancjami i nie ma możliwości ich kilkukrotnego występowania w ramach jednego serwera.

Jak już wiemy jak odczytywać nazwy poszczególnych usług możemy przyjrzeć się stanom jakie każda z nich posiada. Każda z usług może mieć jedynie trzy stany proste do zrozumienia stany:

  •           Running
  •           Stopped
  •           Paused

Pomiędzy każdym z powyższych stanów możemy bardzo prosto się przełączać używając menu kontekstowego każdej z usług.

Kolejną bardzo istotną dla nas informacją jest tryb uruchomieniowy poszczególnych usług (Start Mode). W momencie wyboru trybu Automatycznego (ang. Automatic) – dana usługa zostanie uruchomiona automatycznie wraz ze startem systemu operacyjnego. Tryb ręczny (ang. Manual) umożliwia ręczne uruchomienie usług na żądanie.

Obok wyżej wymienionych ustawień mamy oczywiście możliwość ustanowienia konta jakiego dana usługa będzie używać oraz odczytania identyfikatora procesu usługi. Aby zmienić konto naszej usługi należy na nią kliknąć prawym przyciskiem myszy i z menu kontekstowego wybrać Właściwości naszym oczom powinno się ukazać okno podobne do poniższego.

service-manage-dialog-box

W otwartym oknie na zakładce Log On można wybrać konto wbudowane lub dedykowane do działania określonej usługi. Należy pamiętać, że zawsze powinniśmy używać konta dedykowanego co pozwoli nam zachować zasadę minimalnych uprawnień. Również z poziomu tego okna jesteśmy w stanie zatrzymać bądź uruchomić usługę.  Na zakładce Service otwartego okna możemy przejrzeć informacje na temat naszej usługi tak jak zostało to przedstawione na poniższym zrzucie ekranowym.

service-manage-dialog-box1

Zakładka ta umożliwia nam ustawienie trybu startowego usługi (ang. Start Mode). Z ciekawszych opcji mamy tutaj również ścieżkę binarną wskazującą lokalizację pliku wykonywalnego naszej usługi.

service-manage-dialog-box-advance-tab

Ostatnia zakładka (Advanced) zawiera zaawansowane informacje takie jak:

  • Czy usługa jest częścią klastra
  • Czy przesyłane są informacje diagnostyczne do producenta
  • Miejsce zrzutu błędów usługi
  • Czy usługa działa pod kontrolą 64bitowego systemu operacyjnego

W ramach SQL Server Network Protocols możliwe jest ustawienie priorytetu wykorzystywania protokołów do połączenia się z SQL Server, wyboru należy dokonać spośród trzech możliwości:

Shared memory – pamięć współdzielona, wykorzystywana do połączenia z SQL Server wtedy gdy narzędzia klienckie i serwer znajdują się na tym samym komputerze.

Named Pipes – potoki nazwane

TCP/IP – protokoły komunikacyjne używane w Internecie

Ostatnia grupa ustawień tj.  SQL Server Native Client pozwala na konfigurację protokołów komunikacyjnych, narzędzi klienckich oraz aliasów (wyróżnionych określoną nazwą serwerów i powiązanych z nimi łańcuchów połączeniowych).

Mimo iż, Configuration Manager jest dedykowanym narzędziem do zarządzania usługami SQL Server nie zawiera on ustawień wszystkich usług istotnych z punktu widzenia administratora systemu bazodanowego opartego na tym narzędziu. W systemie Windows istnieje również usługa o nazwie Distributed Transaction Coordinator używana m.in w pakietach Integration Services z włączoną tranzakcyjnością. Warto również pamiętać o usłudze sqlwriter.exe ukazaną poniżej:

task-manager-sqlwriter

Jest to usługa, która wspiera tworzenie kopii zapasowych i ich odtwarzanie z użyciem frameworka Volume Shadow Copy Service (VSS).

To wszystko na dziś, mam nadzieję, że informacje zawarte w niniejszym artykule będą dla Was użyteczne. Oczywiście temat usług jest dużo bardziej obszerny niż niniejszy artykuł, który miał na celu jedynie wprowadzić i zaznaczyć parę istotnych rzeczy. Mam nadzieję, że w przyszłości uda mi się rozszerzyć opisywaną tematykę o bardziej zaawansowane techniki jak np. zarządzanie usługami SQL Server z poziomu skryptów Powershell.

Adrian Chodkowski
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

Leave a Comment

Your email address will not be published. Required fields are marked *