Bu makalede MSSQL Server Agent Job Mail Konfigürasyonunu detaylı bir şeklide görüp son kullanıcılara Mail atması için gerekli olan konfigürasyonları görmüş olacağız.
Bir önceki makalemizde oluşturmuş olduğum TEST_JOB Job’ını kullanarak bu işlemlerimi yapıyorum. İlgili job’ın ne işe yaradığını bir önceki makalemizden öğrenebilirsiniz.

TEST_JOB job’ına sağ tıklayıp properties bölümüne tıklanır.

Gelen ekranda kullanıcılara Mail göndermek için Notifications bölümüne tıklanır.

E-mail kısmını aktif edip önceden oluşturmuş olduğum Operator’ü seçiyorum. Operator’ün ne olduğunu sayafamızın arama yerine operatör yazarak bulabilirsiniz. Gelen ekranda DbOperator’ü seçtikten sonra Job’ın hangi durumunda mail atacağını operator’ün sağ tarafında bulunan alandan seçiyoruz.

Yukarıdaki ekranda Job başarısız olduğunda kullanıcılarımıza mail atmayı sağlayacağız. Önceki makalede oluşturduğumuz Job’ın sonuncu Step’inde(STEP_3) hata vardı.

Yukarıdaki işlemleri tamamladıktan sonra OK tuşuna basıp Job düzenlenmesinden çıkıyorum. Daha sonra Job’ıma sağ tıklayıp Start Job at Step… diyiyorum.

Gelen ekranda tekrardan Start diyiyorum.

Gelen ekranda Job’ımızın Hata vereceğini söylemiştik.

Gelen mailimizde Job’ın başarısız olduğuna dair mesajla karşılaşıyoruz. Aşağıdaki resimde de Job’ımızın hatalı olduğuna dair mesajla karşılaşmaktayız. Çünkü yukarıda sadece hata aldığında mail atamasına dair düzenleme yapmıştık. Job’ımız başarılı olmuş olsaydı Mail gelmeyecekti.

Yukarıdaki hata mesajından sonra hangi adımda hata aldığımızı öğrenmek için ilgili Job’ın View History kısmına bakılır. Yukarıdaki resimde hata mesajında Job’ımızın ismini söylüyor.

Gelen ekranda hangi adımların başarılı olduğu hangi adımların başarısız olduğunuz görebiliriz.

STEP_3’ün 1 defa daha tekrar etmesinin sebebi ilgili step altında Advanced bölümünde yapmış olduğumuz ayarlamadan dolayıdır. Aşağıdaki resimde 1 tekrar yapmasını belirtmiştik.

Tekrardan View History ekranına gelince ilgili hatanın üzerine tıklayınca bize hatanın neden kaynaklandığını belirtiyor.


Hatanın bir Syntax’dan kaynaklandığını belirtiyor. STEP_3’ü kontrol ettikten sonra hatamızı öğrenmiş oluyoruz. Getdate ifadesinde 1 parantez’in olmadığını anlıyoruz.

Bu hatayı düzelttikten sonra tekrardan Job’ımızı çalıştırıyoruz. Başarılı çalışan mailimizin gelmesi için ilgili Job üzerinde Job başarılı olursa mail atmasını söyleyebiliriz. Bunun için When the job succeeds’ı seçiyoruz.

Job’ımız başarılı olduğuna dair Mail almış oluyoruz.

Aşağıdaki resimde görünen When the job completes yaparsak Job’ımız ister hata versin veya başarılı çalışsın Mail daima alırız. Ama başarılı veya hata şeklinde düzenlersek sadece ilgili durumda Mail alırız.

Job’ımız başarılı veya başarısız olunca Mail gelmektedir.

Makaleyi bitirmeden önce şunu da belirtmek gerekir ki. View History kısmında aşağıdaki gibi Ünlem (!) işaretleriyle karşılaşırsak bu şu anlama gelmektedir. İlgili step’in yapacağı işin önceden mevcut olduğunu ve oluşturulduğunu söylüyor. İlgili step’i yapamaz ama job başarılı gibi devam etmektedir. Aşağıdaki resimde de görüldüğü gibi 1. adımda hata mesajı aldıktan sonra 2. ve 3. step’lerin başarılı olduğunu aşağıdaki resimde görmüş oluyoruz. Aslında job başarılıdır.

Not: Sql server agent error logunda aşağıdaki gibi bir hata mesajıyla karşılaşırsak ilgili procedure çalıştırılır.
Message
[298] SQLServer Error: 14641, Mail not queued. Database Mail is stopped. Use sysmail_start_sp to start Database Mail. [SQLSTATE 42000]

EXEC MSDB.dbo.sysmail_start_sp
ilgili ifade çağrıldıktan sonra hata mesajı artık gelmemeye başlar.
Bu makalede Sql Server Agent Job Mail Configuration konusunu ele almış olduk. Başka bir makalede görüşmek dileğiyle.
“İnsan mutlaka ziyandadır. Ancak iman edenler, salih amel (iyi işler) işleyenler, birbirlerine hakkı tavsiye eden ve sabrı tavsiye edenler bunun dışındadır.” Asr-(2-3)