Bu makalede sql server üzerinde Maintenance konusunu genel hatlarıyla ele almış olacağız. Maintenance Plan sql server üzerinde bakım ve performans işlemlerimizi gerçekleştirdiğimiz bir yapı olarak karşımıza çıkmaktadır. Günümüzde tercih edilmese de bazı durumlarda tercih edilmektedir.
SSMS üzerinde Management sekmesi altında görebileceğimiz bir yapı olarak karşımıza çıkmaktadır.
Maintenance Plan oluştururken iki seçenek karşımıza çıkar. Maintenance Plans kısmına sağ tıkladığımızda New Maintenance Plan.. ve Maintenance Plan Wizard kısmı karşımıza çıkmaktadır.

Maintenance Plan’ın çalışması için Sql Agent servisinin çalışması gerekmektedir. Çünkü her ne kadar Management sekmesi altında yapmış olsak da arka planda oluşturmuş olduğumuz Maintenance plan için bir job oluşturuyor.
İkinci seçenek olan Maintenance Plan Wizard ile bir Maintenance Plans oluşturalım. Gelen ekranda aşağıdaki gibi Do not show this starting page again’i seçerek next diyoruz.
Not: Herhangi bir görev oluşturmadan(backup,istatistik vs..) yapılan tüm işlemler aynıdır.

Gelen ekranda Name kısmından Maintenance Plan’a bir isim veriyoruz. Sadece bir tane görev oluşturacağımız için Single schedule for the entire plan or no schedule seçeneğini seçiyoruz. Separate schedules for each task seçeneği ile birden fazla görev seçip sırasıyla scheduled ve ayarlamalar yapabiliriz.

Scheduled kısmında Change.. butonuna basarak bir zamanlayıcı oluşturulur.

Gelen ekranda ihtiyaçlarınıza göre zamanlama belirtilir. Haftada 1 gün sadece Pazar gecesi 23.23.23 zaman diliminde çalışması için bir zamanlayıcı belirtiyoruz. Scheduled type Recurring ve Scheduled’ın aktif olması için checkboxs’ın Enable yapılması gerekmektedir. Daily frequency kısmında Occurs every kısmını seçmiş olsaydık haftada belirtilmiş gün içerisinde kaç defa çalışması gerektiğini ve zaman aralığını belirtebilirdik.

Bu ayarlama yaptıktan sonra Ok denilip ekrandan çıkılır. Gelen ekranda Next denilip bir sonraki aşamaya geçilir.

Gelen ekranda sql server için hangi bakım onarım işlemini yapmak istiyorsak o seçilir. Bu görevler, SQL Server veritabanlarının performansını, bütünlüğünü ve düzenliliğini sağlamak için düzenli olarak yapılması gereken işlemleri içeriyor. Aşağıdaki resme kadar tüm işlemler maintenance plans için ortak olan işlemler olarak karşımıza çıkmaktadır.

Bu kavramların ne işe yaradığına değinelim. Aşağıdaki konu başlıklarının hepsi ayrı ayrı bir makaleninin konusu ama Maintenance Plan oluşturulurken aşağıdaki belirtilen arayüzlerin farklı olduğu diğer kısımların default olarak aynı olduğunu söyleyebilirim.
Check Database Integrity: Veritabanındaki mantıksal ve fiziksel bütünlük problemlerini kontrol eder. Bu işlem, veritabanındaki hataları tespit etmek için kullanılan `DBCC CHECKDB` komutunu çalıştırır.

All databases seçeneğini seçersek bütün veritabanları için dbcc checkdb işlemlerini gerçekleştirecektir.
System databases seçeneğini seçersek sistem veritabanları için dbcc checkdb işlemlerini gerçekleştirecektir.
All user databases seçeneğini seçersek bütün kullanıcı veritabanları için dbcc checkdb işlemlerini gerçekleştirecektir.
These databases seçeneği seçeneğini seçerek spesifik veritabanı seçimi yapabiliriz. Örneğin biz bu örneğimizde aşağıdaki gibi sadece Test veritabanı için dbcc checkdb işlemlerini yapacağız.
Ignore databases where the state is not online seçeneğini seçerseniz dbcc checkdb işlemi sırasında veritabanı erişilemez durumda ise o veritabanını atlar ve işleme devam eder.
Yukarıdaki tüm açıklamalar tüm maintenance plan ekranlarında ortaktır.

Shrink Database: Veritabanındaki boş alanı geri kazanmak için veri dosyalarını küçültür. Ancak bu işlem, indekslerde bozulmalarına neden olabilir, bu yüzden dikkatli kullanılması önerilir.

Reorganize Index: İndeks fregmantasyonu azaltarak veritabanı performansını artırır. Mevcut indekslerin yapısını bozmadan düzenler.

Rebuild Index: Bozulmuş indeksleri tamamen yeniden oluşturur. Bu işlem, performansı artırırken daha fazla sistem kaynağı kullanabilir.
Veritabanını seçtikten sonra aşağıdaki ekranda gördüğünüz gibi spesifik bir tabloyu ya da view’i seçebilirsiniz. Object kısmından Table, View ya da Tables and Views seçeneklerinden birini seçmelisiniz.

Update Statistics: Veritabanı istatistiklerini günceller. İstatistikler, sorgu performansını artırmak için SQL Server tarafından kullanılır. Hangi veritabanını, nesneyi veya objenin istatistiklerini güncellemek istiyorsak ilgili seçenekler seçilmektedir.

Clean Up History: SQL Server Agent görev geçmişini ve maintenance task’ların geçmişini temizler. Bu, sunucu üzerindeki fazla log verilerini temizlemek için kullanılır. Bu yapı ile kısacası Backup, Restore, Job ya da Maintenance Plan Geçmişini silebiliriz.
Aşağıda bulunan Remove historical data older than kısmında hangi tarihten önceki seçilmiş olan checkboxs kayıtlarını silmek istiyorsak onu seçiyoruz.

Execute SQL Server Agent Job: SQL Server Agent tarafından yönetilen görevlerin çalıştırılmasını sağlar.


Back Up Database (Full): Veritabanının tam yedeğini alır. Bu işlem, veritabanının tüm içeriğini yedekler.
Back Up Database (Differential): Full yedekten sonra yapılan değişikliklerin yedeğini alır. Bu, daha hızlı ve küçük yedeklemeler sağlar.
Back Up Database (Transaction Log): Veritabanının yapılan her işlemini yedekler. Bu yedek, felaket anında veritabanını son anına kadar geri yüklemek için kullanılır.

Maintenance Cleanup Task: Eski yedek dosyaları veya bakım görevleri sonucunda oluşan artık dosyaları temizler. Bu görevlerden biri veya birkaçı seçilerek, veritabanı için düzenli bakım planları oluşturulabilir.
Aşağıdaki tüm kısımlar tüm Maintenance Plans’lar için ortak olan işlemler.
Aşağıdaki ekranda Write a report to a text file seçeneğini seçerseniz Folder location seçeneğinde belirlediğiniz klasörde yapılan işlemlerle ilgili log kayıtlarını tutacaktır.
E-mail report seçeneğini seçerek yapılan işlemlerle ilgili raporları To: kısmında belirlediğiniz mail adresine gönderecektir.

Maintenance Plans sekmesi altında bir plan oluştuğunu ve sql agent altında ise bu plan’a bağlı bir job oluşmaktadır.

Execute işlemini ilgili job üzerinden de yapabiliriz.



Oluşmuş olan job’ın içeriğine baktığımızda plan oluştururken oluşturmuş olduğumuz Schedule ve step’in geldiğini görmüş oluyoruz.


İlgili maintenance plan sildiğimizde oluşmuş olan job’ımızda kaybolur.


Manuel bir şekilde bu işlemi gerçekleştirmek için Maintenance Plans üzerine sağ tıklayıp New Maintenance Plans diyiyoruz. Bu şekilde Wizard ekranından bağımsız bir şekilde manuel oluşturabiliriz.

Name kısmından bir isim belirliyoruz.
OK dedikten sonra karşımıza bir boş ekran gelmektedir.

Toolbox bölümünün yanında bulunan ekran aşağıda görülmektedir.

Schedule bölümünden bir zamanlayıcı belirtilir.

Schedule bölümüne tıklanıp bir zamanlayıcı belirlenmektedir.

Zamanlama işlemini yaptıktan sonra OK dedikten sonra gelen ekranda yapmak istediğimiz işlemi çek bırak yöntemi ile gerçekleştiriyoruz. Toolbox bölümünde görevlerin ne olduğunu makalenin başında açıklamıştık.

İlgili Toolbox kutucuğuna çift tıklayıp konfigürasyonumu yapıyorum. Gelen ekran Maintenance Plan Wizard ekranının aynısı.

View T–SQL butonuna tıklayarak yapılan işlemlerin script’ini alabiliriz. İlgili komutu çalıştırıyoruz.

Senkronizasyon olduktan sonra Task’ımız yeşil renge döner.

İlgili query’i kapatıp kaydediyoruz. Aşağıdaki resimde çarpı işareti olan yere tıklıyoruz.

Sql Server Agent altında ilgili job’ımızı görmekteyiz.

Maintenance plan’ı execute veya ilgili job’ı start ettiğimizde backup’ımız başarılı bir şekilde alınmış oldu.

Bu işlemleri makalenin başında vermiş olduğum her bir task’ın ne iş yaptığına bakıp uygulamalı bir şekilde deneyebilirsiniz.
Bu makalede Maintenance Plans konusunun ana başlıklarına değinmeye çalıştık.
Başka bir makalede görüşmek dileğiyle.
Başkaları ile alay etmeyin. Hucurat-11
