SQL SERVER JOB-SCHEDULE VE DB MAİL OLUŞTURMA

 

SQL serverda belirlediğimiz kriterler çerçevesinde otomatize etmek istediğimiz ya da belli tarihte tek seferlik de olsa çalışmasını istediğimi işlemler için JOB oluştururuz. Job’lar ile sql serverda diğer Jobları durdurmak ya da çalıştırmaya kadar istediğiniz çoğu işlemi gerçekleştirebilirsiniz. Biz de bu yazımızda Job oluşturmayı ve Job’ın Schedule, Alert özelliklerini ve  Database Mail konfigürasyonlarını anlatmaya çalışacağız.

 

JOB OLUŞTURMA

SQL serverda Joblar Agent altında çalıştığı için Job oluşturmak ya da oluşturmuş olduğumuz Joblarımızın çalışması için Agent servisinin çalışıyor olması gerekmektedir. Agent altında Jobs sekmesine sağ tıklayıp New Job dediğimiz zaman karşımıza aşağıdaki gibi bir Job olujşturma ekranı gelecektir

1.JPG

 

Bu ekranda yapmamız gereken öncelikle oluşturacağımız Job’a bir isim vermek, verdiğiniz isimlerin yapacağınız işi tanımlar bir başlıkta olması daha sonar Job ile ilgili bir durumda size yardımcı olacaktır.

Bir altındaki bölümde bu Job’ın sahibini seçiyoruz burada da eğer devamlı çalışacak bir Job oluşturuyorsanız ve önemliyse Owner’ın bir local user olması ya da en azından kolay kolay Disable etme gereği duyulmayacak bir user olması daha iyi olacaktır çünkü oluşturduğunuz Jobın Ownerı Disable olduğunda ya da silindiğinde ilgili Job artık çalışmayacaktır ta ki siz yeni bir Owner tanımlayana kadar. Bir sonraki bölümde Jobın dahil olduğu kategoriyi seçiyoruz ben genelde herhangi bir kategoriye dahil olmayan local amaçlı bir job oluşturuyorum siz ihtiyaçlarınıza göre farklı tercihlerde bulunabilirsiniz, Description kısmında da dilerseniz oluşturduğunuz Jobın neler yaptığına dair bilgiler ekleyebilirsiniz ki daha sonra siz ya da sizden sonra gelecek kişiler bu Jobların ne işe yaradığını daha rahat anlayabilsin.

2.JPG

Step bölümünde ise aşağıda bulunan New butonuna tıkladığınızda karşınıza yukarıdaki ekran gelecektir. New Step ekranında da öncelikle bizden bir Step ismi istenmektedir. Tek Job içinde birden fazla Step oluşturacaksak burada Step isimlerini de anlaşılır bir şey olarak belirlemek faydalı olacaktır. Type kısmında ne tür bir kod çalıştırma seçeneği istediğimizi sorar burada PoweShell gibi Cmd gibi seçenekler de bulunmaktadır, ihtiyacınıza göre seçme şansınız bulunmaktadır. Biz Tsql kısmını kullanacağız. Run As seçeneğinin Tsql için bir gerekliliği yok o yüzden Disable durumda görünüyor. Database kısmında da oluşturacağımız Stepteki işlemlerin hangi database’I baz alarak çalışacağını belirtiyoruz default olarak master db seçilidir. Command bölümünde de çalıştırılmasını istediğimiz kod bloğunu yazıyoruz.

3.JPG

Advenced kısmında bize bazı ekstra seçenekler sunuuyor On success action kısmında Step bittiği taktirde yapılacak işlemi belirliyoruz default olarak Go to next step bulunuyor eğer başka stepler varsa sıradaki Step’I çalıştırıyor, başka step olmadığı taktirde herhangi bir hata vermez. Retry Attempts: kısmında Step hata aldığı taktirde kaç kez tekrar çalıştırmayı denesin istiyorsak onu belirtiyoruz, Retry interval kısmında da her çalıştırma arasında kaç dakika olmasını istediğimizi belirtiyoruz buna göre 4’e 5 yaparsak Step ilk hatayı aldıktan 5 dakika sonra tekrar çalışacak ve tekrar hata alması durumunda maksimum 4 defa çalıştırmayı tekrar edecektir.

On failure action: kısmında da step hata aldıktan sonra ne yapsın sorusuna cevap veriyoruz ve hata raporu oluşturmasını belirtiyoruz. Output File kısmında oluşturulacak raporların nerede depolanmasını istediğimizi belirtiyoruz diskte herhangi bir alanda seçebiliriz. Sonraki seçeneklerde çıktının bir tabloya eklenmesi ya da historye eklenmesini isteyebiliriz.

Bir sonraki adım olan Schedule kısmında oluşturacağımız Jobın hangi durumlarda hangi tarihlerde ne zaman başlayıp ne zamana kadar çalışacağı gibi seçenekleri belirliyoruz. Schedule kısmında New butonuna tıkladığınzıda karşınıza aşağıdaki gibi bir ekran gelir;

4.JPG

Burada da öncelikle her adımda istediği gibi bizden schedule için bir isim belirlememizi istiyor. Schedule Type kısmında birkaç farklı seçenek var bunlardan en çok kullanılan Recurring’tir ve bu tarih bazlı yinelenmesini belirtir.  Start automatically when SQL Server Agent starts seçeneğinde Jobın sadece SQL server Agent servisi her Start edildiğinide ya da Restart edildiğinde çalışmasını sağlar. Start whener the CPUs become idle seçeneğinde CPU’da yeteri kadar boş yer bulduğu taktirde çalıştırılması sağlanır. Buradaki CPU’nun ne kadar olacağını kendimiz belirleyebiliyoruz bunun için ilgili Instance’ımızın altındaki Agent’a sağ tıklayıp Properties sekmesine giriyoruz ve Advenced kısmına İdle CPU condition kısmında CPU yüzde kaç boş olduğu ve bu yüzdenin ne kadar süre devam ettiği taktirde CPU odaklı işlemlerin çalışması gerektiğini belirtebiliyoruz. One time kısmında da tek bir tarihte saat dakika ve saniyeye kadar belirlediğimiz bir anda 1 seferliğe mahsus çalışmasını sağlayabiliriz. Başta da belirttimiz giib genelde Recurring seçeneği seçilidir çünkü genelde devamlı çalışacak Joblar oluştururuz tabi istisnalar için diğer seçenekler de bulunmaktadır.

Frequency  bölümünde occurs kısmında oluşturacağımız Jobın Günlük-Haftalık ya da Aylık çalışacağını belirtiyor Recurs every kısmında kaç günde bir çalışacağını seçiyoruz 1 olduğunda hergün çalışacaktır bu Job, Haftalık seçenekte haftanın hangi günlerinde kaç haftada bir çalışmasını istersek ona göre belirtiyoruz. Aylık seçenekte ise her ayın  kaçıncı gününde, kaç ayda bir ya da her ayın kaçıncı haftasında gibi seçenekler belirleyebiliyoruz. Daily frequency kısmında Occurs once at seçeneğinde belirttiğimiz günlerde 1 defaya mahsus çalışacaktır. Occurs every kısmında ise gün içinde kaç saat-dakika ya da saniyede bir çalışmasını istiyorsak ona göre belirleyebilir başlangıç ve bitiş saatlerini de ekleyebiliriz. Bu arada en sık 10 saniyede bir çalıştırabilirsiniz 1 Jobı, daha kısa aralığa SQL server izin vermiyor.

Duration  başlangıç tarihi olarak Job oluşturduğumuz tarih bulunur istersek bunu değiştirebilir ek olarak bitmesini istediğimiz yani Jobın artık çalışmayacağı sınır tarihi de belirtebiliriz. Description bölümünde de belirttiğimiz seçeneklerin tam planını açıklıyor.

5.JPG

 

Alert sekmesinde Jobla ilgili bildirimleri almak istediğimizde takip edeceği işlemleri belirliyoruz. Biz burada bize mail göndermesini isteyeceğiz. Add butonuna tıkladığımızda karşımızda yukarıdaki gibi bir ekran çıkar. Burada da yine öncelikle Alert için bir isim belirlememizi istiyor. Sonraki adımda bunun bir alarm çalışması olduğunu belirtiyoruz. Database name kısmında hangi database için sonuçları alarm olarak göndermek istediğimizi belirtiyoruz. Error number alanına istersek kendimizce anlayacağımız bir hata numarası verebiliriz yada istersek Severity kısmında SQL serverda var olan 25 adet hata mesajından birini seçebiliriz.

6.JPG

Options kısmında ise alarmın bize mail olarak gelmesini ve iletilmesini istediğimiz mesajı ekliyoruz.  Delay between responses alanında kaç dakika veya saniyede bir mailin tekrar gönderilmesi gerektiğini belirtiyoruz, bu durum hata devam ettiği süre içinde geçerli olacaktır.

7.JPG

 

Notifications kımsında 3 sonuçta neler olmasını istediğimizi belirtiyoruz ve biz burada eğer Jobımız hata ile sonuçlanırsa bize mail atılmasını istiyoruz, E-mail bölümünde bizim oluşturduğumuz Database E-Mail konfigüsaryonundaki mailler bulunur biz henüz bir mail grubu oluşturmadığımız için bir seçenek yok birazdan bu konuya da değineceğiz. Diğer seçeneklerde Job olumlu sonuçlandığında ya da hata aldığında veya çalışması tamamlandığında Job silinsin mi ya da sonuç Windows event loglarına eklensin mi tarzı seçeneklere karar verebiliriz. OK dedikten ve Jobımızı oluşturduktan sonra Manual olarak çalıştırıp kontrol etmek istiyorsak oluşturduğumuz Job üstüne sağ tıklayıp Start job at step dememiz yeterli karşımıza çıkan küçük bilgi ekranı Jobımızın çalışmaya başladığını, sonuçlandığını ve bu sonuçlanmanın pozitif ya da negatif sonlandığını gösterir istersek bunu Close’a tıklayarak kapatabiliriz bu Job’ımızın durmasına sebep olmaz sadece o bilgi ekranını kapatır. Job’larımızın çalışma durumlarını kontrol etmek için Job Activity Monitor’ü kullanabiliriz burada çalışma durumunu, son çalışma tarihini ve bir sonraki çalışma tarihi ve daha fazlası gibi bilgileri öğrenebiliriz. Özel olarak bir Job’ın loglarını kontrol etmek istiyorsak da ilgili Job’a sağ tıklayıp View History dememiz yeterli.

Şimdi konusu geçmişken son olarak ele alacağımız Db mail konfigürasyonuna bir göz atalım:

 

 

 

DATABASE MAİL OLUŞTURMA

İlk önce isterseniz SQL konfigürasyonlarından Database Mail konfigürasyonunu Enable duruma getirelim bunun için New Query diyip yeni bir çalışma ekranı başlattıktan sonra SP_CONFIGURE prosedürünü çalıştıralım burada listelenen konfigürasyonlar tam liste olmadığı için önce

sp_configure ‘show advanced options’, 1

GO

reconfigure

GO

Prosedürünü çalıştırıp tüm seçeneklerin listelenmesini istiyoruz, ardından istediğimi değişikliği yapmak için

sp_configure ‘Database Mail XPs’,1

go

reconfigure

go

prosedürünü çalıştırıyoruz burada yaptığımız değişiklik default değeri “0” olan ve Disable  durumda olan özellikleri “1” olarak değiştirip Enable duruma getirmek oldu.

Sql serverda mail oluşturma işlemi Agent servisine ait olmadığı için Agent altında değil Instance altındaki Management sekmesinde bulunur. Database Mail’e sağ tıklayıp Configure Database Mail seçeneğini tıkladığımızda karşımıza gelen ekran bilgi ekranı olduğu için Next diyip ikinci ekrana geçiyoruz ve aşağıdaki gibi bir ekranla karşılaşıyoruz.

8.JPG

Burada bize yeni bir mail konfigürasyonu yapmak istediğimiz, var olan accaount ya da profilleri yönetmek istediğimiz veya tüm konfigürasyonları görmek istediğimize dair hangisini yapmak istediğimizi seçeceğimiz ekran bulunuyor ve biz yeni bir konfigürasyon yapacağımızı belirtip Next diyoruz. Next dedikten sonra Database Mail özelliğini aktif etmek isteyip istemediğimizi soruyor ve biz Ok diyip devam ediyoruz.

9.JPG

 

Sonraki ekranda gelen pencerede bir profil oluşturuyoruz bunun için Profil Name belirttikten sonra bir SMTP Account oluşturacağız ve Add dedikten sonra yukarıdaki ekranla karşılaşıyoruz. İlk olarak oluşturacağımız Account’a bir isim veriyoruz ve dilersek altına da bir açıklama ekliyoruz.

E-Mail Adress: bölümüne yazacağımız E-mail adresimiz SQL  Serverın kullanacağı kaynak mail adresimiz olacak yani göndereceği Mailleri bu hesabı kullanarak mail gönderecek. E-mail adres bölümünü doldurduktan sonra Display name kısmına Profilinizin görünecek ismini belirtiyoruz ve sonraki adımda E-mail adresimizi tekrar giriyoruz. Server name bölümüne smtp.gmail.com yazıyoruz bu bizim belirttiğimiz mail adresimizin gmail olmasından kaynaklı fakat Hotmail/MSN Live/Outlook.com hesaplarından birini kullanacaksanız smtp.gmail.com yerine smtp.live.com yazmanız gerekecektir. Port numarası olarak defaultta 25 gelir fakat bu çoğu mail grubunda engellemelere takılır çünkü dışardan gelen bağlantılara mail adresleri genelde zararlı saldırı tepkisi verir ve 25 portu bu durumda yetersiz kalır bunun için 465 ve 587 portları kullanılabilir en iyi sonuç veren port 587 portu oldu benim için. 587 ve 465 portları genelde SSl istedikleri için alttaki checbox’I onaylayıp SMTP Authentication kısmında ise Basic authentication seçeneğini seçiyoruz ve buraya yukarıda kaynak mail olarak hangi mail adresimizi belirttiysek o mail adresimizi yazıp password alanlarına da o mail adresimizin şifresini giriyoruz. Buradaki düzenlemelerimiz bittikten sonra OK diyip mail adresimizin eklendiğini gördükten sonra Next diyoruz.

10.JPG

Yukarıdaki ekranda bize daha önce eklemiş olduğumuz ve eklemekte olduğumuz tüm mail adreslerini listeler burada üzerinde düzenleme yaptığımız mail adresimizi seçiyoruz ve Default profile kısmında eğer bu mail adresimizin varsayılan adres olarak kullanılmasını istiyorsak No durumdan Yes duruma geçiriyor ve Next diyoruz. Bir sonraki ekran bize maillerimiz hakkında kaç defa gönderilmesi her gönderim arasında ne kadar süre olması ve mailimizin maksimum boyutunun kaç olmasını istediğimize dair seçenekler sunar default durumda gelen seçenekler işinizi göreceği için değişiklik yapmadan Next diyebilir dilerseniz size uygun olabilecek değişiklikler de yapabilirsiniz. Next dedikten sonra son bir bilgi ekranı gelir burada Finish diyip kurulumu başlatıyoruz. Kurulumun tüm adımları Success olduğu durumda konfigürasyonumuz tamamlanmış demek ve artık Close seçeneğine tıklayıp mail gönderme işlemimizi gerçekleştirebiliriz.

Test ekmek için tekrar Management altında bulunan Database Mail bölümüne sağ tıklayıp Send Test E-mail… seçeneğini tıklıyoruz

11.JPG

Database mail profil kısmında kullanmak istedğimiz profili seçiyoruz To bölümünde de maili hangi hesaba göndermek istiyorsak o mail adresini yazıyoruz Subject kısmı mailin başlığı ve Body de mail içeriği olacaktır. To: bölümünü doldurduktan sonra Send Test E-mail’e tıklayıp maili gönderebiliriz. Bazı durumlarda tüm bu düzenlemeleri yapsanız dahi mailleriniz gönderilmiyor olabilir ben bununle bir kez karşılaştığım için işe yaradığını gördüğüm tek çözüm yolunu belirtmek isterim. Mail adresimiz bu erişimi güvenli bulmadığı için belirttiğimiz portlara rağmen yinede erişimi engelliyor olabilir bu yüzden kaynak mail olarak belirttiğimiz adresimizde ufak ama önemli bir değişiklik yapmamız gerekir. Bunun için Mail adresimizden Google Hesabı bölümüne girip Güvenlik bölümü altında bulunan Daha Az Güvenli Uygulama Erişimi seçeneğini Açık hale getirmemiz gerekbilir bu önerilmeyen bir durum olsa da ihtiyacınız olma durumunda kullanabilirsiniz.

 

 

Yorum bırakın