Policy-Based Management(Backup’ı Alınmayan Veritabanları-Database Facet)

Policy-Based Management SQL Server 2008 ile gelen bir özelliktir. Sistemlerimizde istediğimiz kuralları koymamıza, standartlarımızı belirlememize ve kontrollerimizi otomatik olarak yapmamıza olanak sağlar. Örneğin stored procedure’lerimizin isimlerinin rakam ile başlamaması ya da veritabanı recovery modellerinin simple olmaması için kontrol amaçlı olarak policy oluşturabiliriz.

 

Policy Based Management(PBM)’ı kavramak için bazı kavramları anlamanız gerekir.

 

Facet: PBM tarafından yönetilebilen bir özelliktir. Örneğin Database isminde bir facet vardır. Ve bu facet’ı kullanarak veritabanının son 24 saatte backup’ının alınıp alınmadığını kontrol eden bir policy oluşturabilirsiniz.

 

Tüm facet’ların listesine aşağıdaki gibi SSMS üzerinden erişebilirsiniz. Facet detayı için üzerine çift tıklamalısınız.

 

 

Condition: ilgili facet’ların alt özelliklerinin belirlenen koşulu sağlayıp sağlamadığını kontrol eder. Örneğin Database facet’ının LastBackupDate alt özelliğinin belirli bir tarihten büyük olup olmadığını kontrol edebilirsiniz.

 

 

 

Makalemize konu olan Son 24 saatte backup’ı alınmamış veritabanının olup olmadığını kontrol etme amacıyla bir policy oluşturalım.

 

Aşağıdaki gibi Management > Policy Management > Policies sekmelerinden New Policy diyoruz.

 

 

 

Karşımıza çıkan ekranda Policy’e bir isim veriyoruz ve Check Condition kısmından bir condition oluşturmamız gerekiyor.

 

New Condition’a tıklıyoruz.

 

 

 

Karşımıza çıkan ekranda Name kısmından condition’a bir isim veriyoruz.

 

Facet kısmından veritabanlarının backup’larının alınıp alınmadığını kontrol edeceğimiz için Database facet’ını seçiyoruz.

 

Expression kısmında … ‘ya tıklayarak Database facet’ının alt özelliği olan @LastBackupDate ‘i seçiyoruz.

 

Operator kısmından >=’i seçiyoruz. Çünkü son backup’ın mevcut andan 24 saat öncesine kadarki bir backup olup olmadığını kontrol edeceğiz.

 

Value kısmında fonksiyon kullanabiliyoruz. Aşağıda gördüğünüz gibi DATEADD fonksiyonu ile mevcut anın 24 saat öncesini bulan bir script’i value kısmına ekledik. Böylelikle condition’ımızı oluşturuyoruz. DateAdd(‘HH’, -24, GetDate())

 

 

Bir şey dikkatinizi çekmiştir. DateAdd fonksiyonunda HH’yi tek tırnak içine aldık. Normalde tek tırnak içine almadan çalışan bir fonksiyon. HH’deki tek tırnakları kaldırmadan bu fonksiyonu SSMS üzerinden çalıştırırsanız hata alırsınız. Tek tırnak eklemeden Value kısmına eklerseniz de aşağıdaki gibi hata alırsınız.

 

 

Policy expressions require the first argument of DATEADD and DATEPART functions to be in single quotes.

 

Evaluation Mode kısmından On Schedule’ı seçerek policy hangi aralıklarla kontrol’ü yapacağını belirliyoruz ve daha sonra Enable kutucuğuna tıklıyoruz.

 

On Demand’ı seçersek, sadece policy’i çalıştırdığımızda kontrolleri yapar.

 

Server restriction kısmında server bazında bir koşulunuz varsa server bazında bir condition oluşturarak koşulunuzun kontrolünü yapabilirsiniz.

 

 

Belirli aralıklarla otomatik kontrol etmesini istiyorsak Schedule kısmından new diyoruz ve policy’nin kontrol’ü yapacağı sıklığı belirliyoruz. Biz aşağıda her gün 00:00:000’da bir kere çalışacak şekilde set ettik.

 

 

Policy’mizi bu şekilde oluşturduk. Manual olarak çalıştırmak için aşağıdaki gibi Evaluate diyoruz.

 

 

Ben kendi lokal’imde backup almadığım için aşağıdaki gibi bir sonuç aldım.

 

 

 

Instance üzerinde refresh yaptığınızda Instance’ın yanında aşağıdaki gibi mektuba benzeyen bir kutucuğun üstünde kırmızı renkli x işareti çıkıyor. Bunun sebebi instance üzerinde tanımlı olan ve hatalı biten bir policy’nin var olduğunun sql  server’ın bize bildirmek istemesi. Bu işareti gördüğünüzde tanımlı policy’lere bakıp gerekliliklerini yerine getirmeniz gerekir.

 

Örneğimizle ilişkilendirecek olursak veritabanlarının hepsinin backup’ını alıp policy’i yukarda anlattığım gibi tekrar evaluate ettiğimizde bu işaret kaybolacaktır.

 

Policy Based Management ile SQL Server üzerinde yapabileceğiniz bir çok kontrol vardır. Ve profesyonel bir veritabanı yöneticisi bence SQL Server’ın bize sunduğu bu özelliği bütün detaylarıyla kullanmalı. Policy Based Management ile  yapabileceğiniz diğer kontrolleri  sitemizdeki menüden MSSQL’in altındaki POLICY-BASED MANAGEMENT alt menüsünden erişebileceğiniz makalelerde bulabilirsiniz.

Loading

Leave Your Comment