MS SQL Server Database Mail

Bülent Gür 23 Temmuz 2013 2
  • Sumo

Arkadaşlar merhaba

Bugünkü makalemizde MS SQL server database mail özelliğini inceleyeceğiz, daha önceki versiyonlarda SQL mail adıyla bildiğimiz bu özellik yeni versiyonlarda database mail özelliği ile yer değiştirdi. Microsoft daha da geliştirerek IT ve database yöneticilerine sundu. Bu özellik sayesinde database yöneticileri sistemdeki herhangi bir olaydan(alert) ve zamanlanmış görevlerin (Jobs) son durumlarından hemen haberdar olabilecekler ve bunlara müdahale edebilecekler. Şimdi database mail yapılandırılması ve bu mail özelliğini zamanlanmış görevlerde (Scheduled Jobs) ve uyarılarda (SQL alert) nasıl kullanıldığını inceleyelim.

Database mail yapılandırlması için SQL server database mail wizardını kullanacağız ama aynı şeyi komut satırından T-SQL komutları ile yapabiliriz. Biz yapılandırma için wizard kullanacağız.

Şimdi database mail yapılandırılmasını görelim;

Database mail yapılandırılmasını SQL server Management Studio’dan yapacağız.

  1. Studio managemnet’tan database mail kısmına geliyoruz,

  1. Configure database mail diyerek wizardı çalıştırıyoruz,

 

  1. Setup database mail diyerek bir mail profile oluşturuyoruz,

  1. Burada öncelikle profile bir isim veriyoruz ,ben profile ismine databasemail adını veriyorum

 

  1. add diyerek profile yapılandırlmasını yapıyorum , burada ben gmail server üzerinden mail atacağım,

 

Evet ben mail profili sekilde görüldüğü gibi yapılandırıyorum, SQL Server mail atarken gmail’in smtp serverını kullanacak, siz istediğiniz bir smtp server kullanabilirsiniz

 

Buraya istediğiniz kadar mail server ekleyebilirsiniz,

  1. Bu bölümde profil güvenliğini ayarlıyoruz,

 

 

Ben hem public profiles hemde private profiles seçtim

  1. Bu aşamada system parametrelerini ayarlıyoruz,

 

  1. En son aşamada tüm yapılandırılmanın doğruluğunu kontrol edip profile’ ın oluşması için finish diyoruz.

     

  2. Evet başarılı bir sekilde profil oluştu.

 

  1. SQL Server’da mail enabled özelliğinin aktifleştirilmesi gerekiyor ; bunun için server tarafında facet ayarlarına giriyoruz ,

 

Ve “surface area configuration” tarafında “databasemailenabled” özelliğinin “true” olması gerekiyor.

  1. Evet oluşturduğumuz profile çalışıp çalışmadığını test etmek için bir test mail atacağız ;

Send test E-Mail diyoruz ve

Ve test mailinin gidip gitmediğini kontrol ediyoruz.

Mailimize baktığımız zaman testin başarılı olduğunu ve SQL serverın mail atabildiğini görüyoruz.

 

 

  1. Database mail ile alakalı olarak log’ları “view database mail log ” kısmından görebiliriz.

 

 

Bu kısımda tüm database mail logları görebiliriz.

 

PART B

Bu bölümde ise SQL Server Agent’ın tarafında database mail yapılandırılmasını göreceğiz.

  1. Öncelikle SQL Server Agent’ın çalışıyor olması lazım ,

 

SQL server Agent’ ı çalıştırmak için configuration manager tarafında Agent üzerinde “start” diyerek çalıştırıyoruz.

  1. SQL Server Agent üzerinde özelliklerine girerek oluşturduğumuz mail profile’ı Agent’ta ekliyoruz, böylece agent “operatörleri” mail yoluyla uyaracağı zaman bu mail profile’ı kullanacak

 

Agent properties girerek ” alert system” tarafında database mail ve oluşturduğumuz mail profili seçiyoruz ,

  1. Bütün bu değişikleri yaptıktan sonra SQL server Agent’ı restart ediyoruz,aksi takdirde Agent mail atmayacaktır.

 

PART C

Şimdi sıra geldi herhangi olay ve sonuç durumunda uyarılacak kişileri tanımlama, bu tur kişilere “operators” diyoruz.

Operators tanımlamak için SQL Server Agent tarafında opretors kısmına giriyoruz ,

New operators diyoruz ve yeni bir operatör tanımlıyoruz ;

Bir operator 3 farklı metod ile uyarılmaktadır ;

 

  1. e-mail
  2. net send
  3. pager e-mail

biz email metodunu kullanıyoruz ve e- mail kısmına uyarıların hangi maile gitmesini istiyorsak o mail adresini yazıyoruz, ben email kısmına bulentgur@networkakademi.net mail adresini yazıyorum. Hangi günler ve hangi saatlerde bu operatörün uyarılacağını belirleyebiliriz, farklı saat ve günlerde çalışan birden fazla operator tanımlayabiliriz. Ben burada bulent adlı operatörün haftaiçi ve mesai saatlerinde uyarılmasını için gerekli ayarları yaptım.

 

 

PART D

Bu bölümde ise Database mailin ve operatörlerin nasıl çalıştıklarını inceleyeceğiz. Database ve operatorleri zamanlanmış görevlere (jobs) ve uyarılara (alerts) nasıl eklediğimizi göreceğiz. Jobs ve alerts nasıl oluşturulduğunu başka bir makalemizde inceleyeceğiz.

Jobs kısmına bana ait bir jobs var ve bu jobs muhasebe database’nin günlük olarak yedeğini alıyor. Bu jobs başarılı ve basarısız yedek aldığında bana mail atmasını istiyorum.

Bunun için SQL Server Agent kısmından Jobs kısmına giriyor ve istediğim job ‘ın ozelliklerine giriyorum .

Özellikler kısmında notification kısmından hangi tür uyarı kullanacağımı belirliyorum , ben burda mail yoluyla operatorümun uyarılmasını istediğimden E-mail seçeneğini seçiyorum. E-mail tabını işaretleyince bu kısımda daha önce tanımladığımız tüm operatörleri görebiliriz ve istediğimizi seçebiliriz. Hangi durumda bu operatörün seçileceği ve Windows loğlarına yazılıp yazılamayacağını Seçiyoruz. Ben iş bitince hem bulent operatorunun uyarılmasını aynı zaman da Windows application loglarına yazılması seçeneklerini işaretliyorum.

 

Evet zamanlanmış bir görev olduğundan job history kısmına bakarak job ‘ların başarılı veya başarısız olduğunu görebiliriz.

 

Evet burda job kısımında view history diyerek loğlara bakıyoruz ve başarılı olduğunu görüyoruz.

Bizim ayarlarımıza göre işin (Jobs) başarılı veya başarısız bitmesi durumunda operator mail yoluyla uyarılacaktı, maillerimize baktığımızda işin başarılı bir şekilde bittiğine dair bir mail alıyoruz.

 

 

Bir diğer operator kullanma sebebimiz daha önce dediğimiz gibi uyarılar (alerts), şimdi de bir operatörün alert’a nasıl eklendiğini ve herhangi alert durumu oluşursa database mail ile nasıl operatörün uyarıldığına bakacağız.

SQL server Agent bölümünden alerts kısmına giriyoruz ve orda daha önce tanımladığımız alert ları görüyoruz.

Alerts bölümünden istediğimiz alert’a giriyoruz , ben şöyle bir alert tanımladım.

 

Muhasebe database’nin transaction log’u 5000 Kb üzerine çıkarsa mail yoluyla bulent operatorunun uyarılmasını istiyorum.

General tabında muhasebe database’nin transaction log boyutunun 5000 Kb ‘ın üzerine çıkması durumunu belirledim

ve response tabına giriyorum burda ise böyle bir olayın olması durumunda ne yapacağına karar veriyoruz. Ben burda bulent operatorunun E-mail yoluyla uyarılması seçeneğini işaretliyorum.

 

Options kısmında oluşan duruma göre bir uyarı ekleyebiliriz. Ve kaç dakikada bir operatöre mail atılacağını belirliyoruz.

 

Oluşturulan alert ‘lar disabled durumda gelir ,çalışması için enable ediyorum,

Ardından alert durumunun oluşması için muhasebe databese’ nin transaction log file boyutunu elle büyütüyorum. Bunun için muhasebe database’ inin ozelliklerine giriyorum ve orda log file boyutunu elle 100 MB yapıyorum .

Bu durum alertın çalışmasını tetikleyecek ve ve bize SQL agent tarafından operator’e mail atılacaktır.

Evet gördüğümüz gibi operatörümüze mail geldi ve mailin içerisinde transaction log’larının aşırı şiştiğine dair birde bilgilendirme var .

 

 

Evet gördüğümüz gibi hem jobs hemde alerts kısmında oluşacak bir durum için bize SQL Server Agent database mail özelliğini kullanarak bize mail atılmasını sağladık böylece hem zamanlanmış görevlerin (jobs) hemde database sistem de oluşacak herhangi bir uyarının ( alerts) bize hemen bildirilmesini sağladık.

Başka bir makalede görüşmek üzere…

2 Comments »

  1. Mustafa Binici 05 Ekim 2013 at 10:47 - Reply

    Hocam.
    SQL Server 2008 veritabanı kullanarak Delphi 2010 ile programı yazdım. 317 kullanıcı ile program çalışıyor.Tüm Kullanıcılar ile bağlanıyorlar.
    SORUN.
    herhangi bir seferde koltuk satıldığı vakit anında tüm kullanıcılar nasıl bildirilip tabloları güncellenir. aynı koltuğa 2-3 defa satış yapılıyorda engellemem lazım.
    LÜTFEN YARDIM EDİN.

  2. Mustafa Binici 05 Ekim 2013 at 10:49 - Reply

    Hocam.
    tüm kullanıcılar OLE kullanarak sa ile bağlanıyorlar. ve benim sorunuma acil çare bulmam lazım.

Yorum Bırak »

Cevabı iptal etmek için tıklayın.