İlginizi Çekebilir
  1. Ana Sayfa
  2. SQL Server
  3. Veritabanındaki Değişiklikleri DDL Trigger ile Yakalamak

Veritabanındaki Değişiklikleri DDL Trigger ile Yakalamak

Veritabanındaki Değişiklikleri DDL Trigger ile Yakalamak

Bu yazımızda veri tabanı içerisinde Veri Tanımlama (DDL – Data Defition Language) işlemleri  gerçekleştirildiğinde ilgili sorguları takibini yapacak bir sistem kuracağız. Bu sayede veri tabanı tablo yapısında kim değişiklik yapmış, ne zaman yapmış gibi soruların cevabını önceden alıyor olacağız.

’lar

Veri tanımlama işlemleri için oluşturulan bu Trigger türü veri tabanı veya sunucu kapsamında yazılırlar. Veritabanı kapsamında oluşturulan Trigger’lar oluşturuldukları veri tabanında nesneler olarak depolanır. Sunucu kapsamında oluşturulan veritabanları ise Master veritabanı içerisinde depolanırlar. Örneklendirecek olursak; ’a (Instance’a) login olarak bağlanan kişilerin kayıtlarını tutabiliriz, yada bizim gerçekleştireceğimiz örnek gibi veritabanında oluşturulan ve değiştirilen herhangi bir nesneyi yakalama işlemi içinde yazabiliriz.

Kullanacağımız örneğimizde DDL_DATABASE_LEVEL_EVENTS grubundan istisnasız tüm DDL eventlerini yakalayarak kaydedeceğiz.Yazacağımız Trigger içerisinde gerçekleştirilen işlem türü hakkında bilgi alabilmek için EVENTDATA() fonksiyonunu kullanacağız. Bu event Trigger’ın tetiklenmesi esnasında tetiklenen olay ile alakalı bir xml formatında çıktı üretir.

DDL Trigger Oluşturma İşlemi

Nesnelerin değişimini inceleyebilmek adına bir veritabanı ve tablo oluşturarak işlemleri adım adım örnekleyelim;

Sırada kayıtları tutacağımız tablomuzu oluşturmakta,

DDL Trigger’ımızı veri tabanı seviyesinde tüm olayları kapsayacak şekilde yazıp oluşan işlemdeki bütün ayrıntıları kapsayacak xml içeriğimizi tablomuza kayıt edecek şekilde tanımlıyoruz.

Trigger’ı yazarken kontrolleri sağlıklı yapmak önemlidir. Olası bir hata durumunda sistemin çalışmaz hale gelmesi istenilen bir durum değildir. Kod yazarken gerekli kontrolleri eklemeyi unutmayınız.

Resim-1

Kaydelilen Verileri Görüntüleme

Şimdi gerçekleştirilen işlemleri görüntüleyerek işlenilen verileri görelim.

Son olarak Content’imize eklenen Xml içeriği görelim,

Tetiklenme sonrası elde edilen bu xml’i ayrıştırarak veritabanına kayıt etme işlemi mümkündür. Makale sonunda yer alan kaynağa göz atarak özel ayrıştırma yapabilirsiniz.  Özetlersek,

Avantajlar,

  • Çok fazla ayrıntı içeriyor.
  • Tam olarak ne değiştini kesin görülebiliyor.
  • Yürütülen T-Sql deyimi anında alınabiliyor.
  • “Ne zaman?”  denildiğinde kesin sonuca varılıyor.
  • Kurulumu kolay.
  • Ek filtrelemeler yapılabilir.
  • Kolay görüntülenebiliyor.

 

Dezavantajlar,

  • Eski veriye erişim kalmıyor.
  • Verileri saklama seçeneği bulunmuyor.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

https://docs.microsoft.com/en-us/sql/relational-databases/triggers/ddl-event-groups?view=sql-server-2017 

TAGs: , DDL Trigger, , , , SQL Server

Yorum Yap

Yazar Hakkında

Karaman doğumluyum. Lisans eğitimimi Cumhuriyet Üniversitesi Yönetim Bilişim Sistemlerinde tamamladım. Lisans eğitimimi tamamladıktan sonra Ankara'da bir yazılım firmasında yaklaşık 1.5 yıl çalıştım. Daha sonra İstanbul'da Erp ürünleri destek ve satışını yapan bir firmada çalıştım. Şu an bilişim sektöründe DMC Teknoloji bünyesinde Sql Server Database Administrator olarak çalışmaktayım. Microsoft Azure SQL, Microsoft SQL Server alanlarında makaleler yazmakla birlikte Mshowto Podcast çalışmalarına katkıda bulunuyorum.

Yorum Yap