Harmonogramowanie zadań w SQL Server i Windows Server

Nowy rok to czas postanowień. Postanawiamy na przykład, że regularnie, co wtorek będziemy odwiedzali siłownie / baseny itp. Jakiś czas temu w sieci pojawiła się informacja, że tylko 8% Polaków realizuje swoje postanowienia noworoczne. Dlaczego ? Być może dlatego, że nie jesteśmy maszynami. Jedną z tych cech, w których komputery są od nas zdecydowanie lepsze jest regularność.

Harmonogramowanie zadań na poziomie SQL Server czy Windowsa jest dziecinnie proste i o tym będzie ten wpis.

SQL Server Agent

Zacznijmy od SQL-a. Przykładowo, chcemy wykonać “ciężką” procedurę składowaną raz dziennie, najlepiej w nocy, żeby nie obciążać serwera bazodanowego, kiedy korzystają z niego intensywnie użytkownicy naszej aplikacji.

W wersjach SQL Server wyższych niż Express mamy do dyspozycji usługę agenta, którą można łatwo konfigurować z SQL Server Management Studio.

dd

Po uruchomieniu usługi (po instalacji domyślnie jest wyłączona) i rozwinięciu podfolderu Jobs możemy przeglądać nasze zadania i definiować nowe (prawy przycisk myszy, New Job…). Podczas definiowania nowego zadania mamy do dyspozycji takie zakładki:

ddd

a więc wszystko, co jest nam potrzebne, czyli:

  • ogólny kontekst zadania (baza, użytkownik)
  • etapy, z których ma składać się zadanie
  • harmonogramowanie
  • alerty, notyfikacje

Sam harmonogram można sobie wyklikać:

job-schedule

Definiowanie kroków również jest ekstremalnie proste. Wystarczy wkleić kod, który ma się wykonać i wybrać kilka opcji z listy.

heavy

A co jeśli chcielibyśmy czegoś więcej, na przykład w jednym z kroków wywołać API REST-owe ? Możemy definiować kroki wykonywane jako Powershell lub cmd.

Ktoś powie: “no dobrze, klikanie fajne, ale mamy w pracy kulturę devops, mikroserwisy i 333 środowiska testowe, mam klikać na każdym ?”. Otóż nie ma takiej potrzeby. Na podstawie raz zdefiniowanego joba można wyklikać skrypt SQL i odpalać go później na innych środowiskach.

create-to

Windows Server

Bardzo podobny mechanizm mają Windowsy. Po polsku nazywa się Harmonogram zadań, w wersji angielskiej jest to Task scheduler. Dostępny jest nie tylko na wersjach “Server”, ale w sumie tam jego użycie jest pewnie najczęstsze.

ts

Po wybraniu opcji Create task mamy do dyspozycji podobne opcje jak w SQL. Ekran definiowania harmonogramu jest bardzo podobny, nazewnictwo trochę się zmienia, bo w SQL mieliśmy schedules, w Schedulerze mamy Triggers

aaaa

Analogicznie zamiast Steps mamy Actions, gdzie istnieje możliwość wywołania programu lub skryptu z określonymi argumentami.

wdwdw

Również tutaj, definicję każdego zadania można później wyeksportować, tym razem do pliku XML.

Reasumując, jeśli mamy coś do zrobienia więcej niż raz – automatyzujmy to.

Po pierwsze mamy do tego mega proste narzędzia.

Po drugie komputer w odróżnieniu od nas na pewno nie zapomni o wykonaniu zadania w określonym czasie.

Po trzecie, jeśli wołasz ten sam program, procedurę, skrypt, dwa, trzy, cztery razy, prawdopodobnie tracisz czas.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s