Wysyłanie alertów SMS przy błędach w wykonaniu jobów w MSSQL
Odkąd procesy biznesowe stały się coraz bardziej złożone pod względem ilości danych czy czasu ich przetwarzania coraz bardziej ważne stawało się informowanie osób odpowiedzialnych za wynikłe błędy lub problemy.
W pierwszej kolejności wybór padł na stosowne raporty w Reporting Services, ale ilość już spływających innych raportów powodowało unikanie przez użytkownika ich pomijanie. Dodatkowo aby odnaleźć konieczne było wertowanie skrzynki mailowej a co za tym idzie uruchomienie komputera lub skorzystanie z telefonu.
Kolejnym pomysłem okazało się wysyłanie wiadomości SMS do osób, aby w razie co wcześniej wiedziały o problemach i mogły zareagować szybko. Niestety SQL 2016 nie miał możliwości integracji z żadnym API.
Po analizie dostawców API SMS znalazłem stronę https://serwersms.pl/ która umożliwia wysyłkę SMS poprzez email. Niestety kolejny problem, wiadomość email musi być w odpowiednim formacie, czyli:
1. wiadomość musi pochodzić ze zdefiniowanego wcześniej maila
2. w temacie musi być klucz zdefiniowany w panelu
3. w temacie musi być numer telefonu gdzie wysłać SMS
W pierwszej chwili wydawało mi się to nie do przejścia, ale znalazłem kod MS SQL, który umożliwia zdefiniowanie testu wysyłki maili z SQL Server.
USE [msdb]
GO
USE MSDEXEC (msdb.dbo.sp_send_dbmail
@recipients = ’[email protected]’,
@body = 'treść maila’,
@subject = 'klucz: Klucz z panelu API, numer:12345678′ );
Ja stworzyłem oddzielny maintenance plan z oddzielnymi subplanami. To da mi łatwe zarządzanie wysyłką oraz dostęp do jobów SQL, które będę mógł wywołać.
Teraz jak wywołać job wysyłkowy SMS przy błędzie ? To bardzo proste, w istniejącym JOBie który chcemy monitorować dodajemy na końcu dodatkowy step. A w nim:
1. w general nadajemy nazwę dla stepu alertowego
2. w general wybieramy database: msdb
3. w polu command wpisujemy:
exec dbo.sp_start_job 'nazwa_joba_od_wysyłki_sms’
4. w Advanced w akcji on success wybieramy Quit the job reporting failture
5. w Advanced w akcji on failture wybieramy Quit the job reporting failture
Następnie w każdym stepie joba, który chcemy monitorować w Advanced wybieramy uruchomienie stepu ostatniego /wysyłającego alert/ w polu on failture action.
Noi gotowe…. czyli ostatni step przed alertowym wyjdzie z joba a jeśli wystąpią problemy z jakimś stepem to przejście do stepu ostatniego który wyśle maila.