Wysyłanie alertów SMS przy błędach w wykonaniu jobów w MSSQL

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

Wysyłanie alertów SMS przy błędach w wykonaniu jobów w MSSQL
Wysyłanie alertów SMS przy błędach w wykonaniu jobów w MSSQL

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.

About the Author: admin

Leave A Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.