Wysyłanie powiadomień w SQL Server – cz. II (wykorzystanie funkcji msdb.dbo.sp_send_dbmail)

W poprzedniej części opisałem jak skonfigurować Database Mail. W jaki sposób jednak korzystać z tej usługi? W jaki sposób wysyłać e-maile zarówno użytkownikom systemu jak i użytkownikom technicznym? Jedna z metod została już zaprezentowana i polega na wykorzystaniu procedury składowanej msdb.dbo.sp_send_dbmail. Funkcja ta wymaga podania nazwy profilu, z którego będzie wysyłany e-mail, adres odbiorcy lub adres odbiorcy DW lub adres odbiorcy UDW oraz treść e-maila lub załącznik lub temat e-maila lub zapytanie, którego wynik zostanie wysłany jako treść e-maila. Przykładowo można wysłać bieżącą datę jako treść e-maila z wykorzystaniem następującego kodu w T-SQL:

Częściej jednak będzie wykorzystywany zestaw parametrów funkcji sp_send_dbmail wykorzystujący temat i treść e-maila:

Oczywiście możemy uprzednio przygotować sobie treść e-maila w oddzielnej zmiennej i dopiero później tę zmienną wykorzystać, przykładowo:

Do tej pory udało nam się wysłać e-maila w formacie tekstowym. Czy istnieje jednak możliwość wysłania e-maila w formacie HTML? Taka opcja oczywiście także jest dostępna i dodaje naprawdę paletę ciekawych możliwości. Zacznijmy od prostego nagłówka i paragrafu w HTML-u:

Znajomość HTML i CSS pozwala na budowanie z Database Mail naprawdę ciekawych rozwiązań powiadamiających użytkownika. Wzbogaćmy zatem naszego e-maila o wewnętrzny arkusz stylów CSS, zamieńmy ostatnie zdanie jako paragraf i wyróżnijmy je kolorem czerwonym:

Jak widać możliwości ogranicza jedynie nasza wyobraźnia. Możemy w treści e-maila wplatać różne wartości zmiennych. Przykładowo, gdybyśmy chcieli dodać do nagłówka w nawiasie bieżącą datę, wystarczyłoby rozbudować zmienną w następujący sposób:

Przy okazji pokazano, jak najlepiej oglądać wyniki swojej pracy. Zanim nasza skrzynka zapcha się do granic możliwości, warto skorzystać z funkcji print() i podglądać zbudowany kod HTML w zmiennej.

Kod ten możemy zapisać jako plik HTML, który możemy podglądać w przeglądarce internetowej:

Podstawy HTML-a i CSS warto poznać np. wykorzystując stronę internetową Sławomira Kokłowskiego http://www.kurshtml.edu.pl. Ja swoje pierwsze kroki w HTML-u stawiałem kilka(naście?) lat temu z tym kursem. I choć moje zainteresowania webdesignem zostały już dawno przyćmione bazami danych, to okazuje się, że zawsze wiedza może się na coś przydać 😉

Dodatkowo na deser możliwość wysyłki e-maila z załącznikami:

Należy pamiętać, żeby konto, na którym działa SQL Server miało uprawnienia odczytu do danego pliku.

Po co to wszystko? Zamiast wczytywać się codziennie w dziesiątki powiadomień e-mailowych o powodzeniu lub braku powodzenia w wykonywaniu jobów na serwerze moim zdaniem warto przyjąć następującą strategię:

  1. Ogólna informacja dotycząca wykonania zadań powinna być codziennie za dzień poprzedni.
  2. Brak informacji oznacza kłopoty (np. wyłączenie DM, SQL Servera lub serwera SMTP).
  3. Informację najlepiej podawać użytkownikowi od ogółu do szczegółu.
  4. Pierwsze spojrzenie na e-maila powinno dawać ogólną odpowiedź, czy jest źle czy jest dobrze.
  5. Informację o braku powodzenia danego zadania należy wysłać jednorazowo do użytkownika.
  6. Informacje o niepowodzeniach trafiają tylko do właściwych osób.
  7. Email powinien być zrozumiały dla odbiorcy.
  8. Nadmiar powiadomień spowoduje przyzwyczajenie się do natłoku e-maili i ich ignorowanie.
  9. Dezinformacja jest gorsza od informacji.
  10. Kluczowe informacje są wyróżnione.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *