Policy Management ile Koşul Kontrolleri

Published on 08 December 2013 by in Policy Management / Okunma: 1,680

0

Policy Management ile ilgili bir önceki yazımda (Policy Management ile Politika Bazlı Yönetim Modeli) SQL Server 2012′de Policy Management yapısını derinlemesine incelemiştik. Bu yazımda detaylı olarak örnekler ile devam edeceğiz.

Daha önceki yazımda Policy Management’ı dört ana bölümde özetlemiştik. Bunları hatırlayacak olursak;

  1. Policies:Yaratılan condition’ları tetikleyen objelerdir.
  2. Target: Oluşturulan Policy’nin hangi nesneler için tetikleneceğini gösterir.
  3. Conditions: Facets’leri kullanarak yarattığımız kurallar havuzudur.
  4. Facets: Yaratacağımız condition için facets’leri kullanırız.

Önceki makalemde verdiğim örnekte yaratılacak Stored Procedure’leri belirlenecek bir prefix ile belirli bir düzende korumamızın biz DBA’ler için büyük avantajlar sağladığından bahsetmiştik. Policy Management ile bu örneği aşağıdaki gibi gerçekleştirebiliriz.

 

İlk olarak Condition tanımlıyoruz. Bunun için Policy Management‘dan Conditions‘a sağ tıklayıp New Condition…‘a tıklıyoruz.

 

 

 

 

 

 

Açılan pencerede Condition ismini belirliyoruz. Ardından Condition’ın hangi facets’i kullanacağını belirtiyoruz. Burada Stored Procedure‘ı seçiyoruz. Condition düzenimizi hemen altındaki Expression kısmında belirtiyoruz. Bu bölümdeki Field kısmında @Name‘i seçerek Stored Procedure ismini temsil etmesini sağlıyoruz. Operator olarak LIKE‘ı seçiyoruz. Son olarak Value kısmına tek tırnak içinde sp_% yazıyoruz. Yani Stored Procedure isimlerinin sp_ ile başlamasını sağlamış oluyoruz.

 

 

 

 

 

 

 

 

 

 

 

Oluşturmuş olduğumuz Condition’ı bir Policy’e bağlamamız gerekiyor. Bunun için Policy Management altından Policies‘e sağ tıklayarak New Policy… diyoruz.

 

 

 

 

 

 

 

 

 

 

Create New Policy ekranında ilk olarak Policy ismini belirliyoruz. Hemen altındaki Check condition kısmından oluşturmuş olduğumuz Condition’ı seçiyoruz. Oluşturmuş olduğumuz Condition’ı Check condition kısmında seçtiğimiz anda Against target bölümünde Condition içeriği görüntüleniyor.

 

 

 

 

 

 

 

 

 

 

 

 

 

Bu bölümde default olarak condition’ımızın instance içerisindeki bütün Database’ler için geçerli olacağı gözükmektedir. Eğerki belirleyeceğimiz Policy’nin tek bir Database üzerinde aktif olmasını istiyorsak In Every‘nin yanındaki ok’a tıklayarak New condition…‘a tıklıyoruz. Açılan ekran, az önce Stored Procedure için tanımladığımız Condition ekranının aynısı oluyor. Buradaki mantık Eğer bir Condition’ın içerisindeki Database’i spesifik belirlenecek bir Database olarak oluşturmak istiyorsak bunu da condition olarak belirlememiz gerekmektedir.

 

 

 

 

 

 

 

 

 

 

 

Bu sefer Facets kısmından Database’i seçiyoruz ve aynı Stored Procedure’de yaptığımız gibi Expression‘ımızı oluşturuyoruz. Son olarak OK‘e tıklayarak bir önceki Policy ekranımıza geri dönüyoruz.

 

 

 

 

 

 

 

 

 

 

 

 

 

Evaluation Mode kısmına geçiyoruz ve burada karşımıza 4 seçenek çıkıyor.

 

 

 

 

Mode türleri aşağıdaki gibidir;

  1. On demand: Bu mode ile Policy’nin tetiklenmesi tamamen kendi kontrolümüzde oluyor. Yani Eğer bir Policy’i tetiklemek istiyorsak bunun için Policy’e sağ tıklayıp Evaluate dememiz gerekmektedir.
  2. On schedule: Adından da anlaşılacağı gibi zamanlanmış görev olarak Policy’i tetiklemek bu mode türü ile mümkündür.
  3. On change: log only: Eğer Policy içerisinde belirlenen condition’larla beklenen koşul sağlanmaz ise Event Log’a log yazdırılır.
  4. On change: prevent: Bu mode türü ile belirtilen koşul sağlanmadığında gerçekleştirilmek istenen iş bizim belirleyeceğimiz hata mesajları print edilerek sonlandırır.

Evaluation mode’lardan biz On change: prevent‘i seçiyoruz. Çünkü hatalı oluşturulmak istenen Stored Procedure isminin neden hatalı olduğunu ekrana yazdırarak bu işlemi gerçekleştirmek isteyen kişiyi bilgilendireceğiz. Bu işlemi ise Policy içerisinde Description tab’ına geçerek gerçekleştiriyoruz.

 

 

 

 

 

 

 

 

 

 

 

 

 

Açılan ekranda Category kısmında Stored Procedure Policy‘i seçiyoruz. Ardından altındaki alanları hata verdiğinde ekranda nasıl print etmek istiyorsak istediğimiz gibi dolduruyoruz.  Gerekli bütün alanları doldurduktan sonra OK‘e tıklayarak Policy’mizi sonlandırıyoruz. Artık Policy’mizi test edebiliriz. Bunun için aşağıdaki gibi bir Stored Procedure yaratmaya çalışalım;

CREATE PROCEDURE CreateUser
AS
PRINT 'CreateUser'

Oluşturmuş olduğumuz condition’lar doğrultusunda Policy’miz Stored Procedure’ımızı create etmek istediğimizde aşağıdaki gibi hata mesajını print edecektir.

 

 

 

 

 

 

 

Alınan bütün hata mesajları Policy History log’una yazılmaktadır. Oluşturmuş olduğumuz Policy’mizin geçmişte verdiği bütün hataların detaylı log’una Policy’e sağ tıklayıp View History diyerek ulaşmamız mümkündür.

Leave a Reply