W poprzednich dwóch postach pokazywałem jako skonfigurować Database Mail i jak skorzystać z procedury składowanej msdb.dbo.sp_send_dbmail. Jak jednak wykorzystać praktycznie zdobytą wiedzę?
W przypadku zadań SQL Server Agenta definiuje się kroki i akcję, która ma zajść po ukończeniu danego kroku w przypadku powodzenia i braku powodzenia. Spróbujmy sobie wyobrazić zatem zadanie, w którym głównym krokiem jest Krok 1 i jest to np. wykonanie pakietu SSIS. Krok 2 to wysyłka e-maila w przypadku braku powodzenia Kroku 1. Wyobraźmy sobie zatem następujący ciąg przyczynowo skutkowy:
- W celu utworzenia nowego zadania SQL Server Agent należy kliknąć PPM na węźle Jobs i wybrać opcję New Job.
- Należy nadać nazwę Zadanie.
- Należy przejść do zakładki Steps, wybrać przycisk New…
- Należy wpisać nazwę kroku Krok 1 i wybrać typ SQL Server Integration Services Package. Należy wpisać w pole Server: localhost. Uwaga! Brak wpisania ścieżku do pakietu SSIS jest specjalnie przygotowanym błędem.
- Na zakładce Advanced należy wybrać z listy rozwijanej On success action: Quit the job reporting success. Natomiast dla listy rozwijanej On failure action: Go to the next step.
- Zaakceptowanie edycji kroku joba wyświetli komunikat ostrzegający o braku wyboru pakietu SSIS do wykonania:
- Należy utworzyć Krok 2. Należy wybrać przycisk New…, wpisać nazwę kroku Krok 2 i wybrać typ Transact-SQL script (T-SQL). W polu Command: należy wpisać następujące zapytanie wysyłające e-maila:
1 2 3 4 5 |
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Profil techniczny', @recipients = 'xyz@gmail.com', @subject = 'Wystąpił błąd w jobie.', @body = 'Wystąpił błąd w jobie.'; |
- Odwzorowanie wcześniejszego schematu wygląda zatem następująco:
Z uwagi na fakt, że w Kroku 1 joba Zadanie nie został podany żaden pakiet SSIS wystąpi błąd w Kroku 1. Nastąpi zatem przejście do Kroku 2 joba Zadanie, czyli wysłanie e-maila o wystąpieniu błędu. W celu przetestowania te sytuacji należy kliknąć PPM na job Zadanie i wybrać opcję Start Job at Step… Następnie należy wybrać Krok 1 i kliknąć przycisk Start. Zgodnie z przewidywaniami wykonanie joba zakończy się błędem:
A na podany adres e-mailowy w parametrze procedury msdb.dbo.sp_send_dbmail zostanie wysłana wiadomość. Poznany mechanizm pozwala na tworzenie złożonej logiki.