Forum

Triggerlar açı...
 
Bildirimler
Hepsini Temizle

Triggerlar açılıp kapandığında hangi tabloya yazıyor ?

4 Yazılar
3 Üyeler
0 Likes
1,521 Görüntüleme
(@FatihDEMiR)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 
Merhaba,
 
SELECT  name ,modify_date from sys.triggers where is_disabled = 1
 
İle birlikte kendime job yardımı mail attırıyorum.
Hangi triggerlar disable edilmiş ve ne zaman disable edilmiş diye. 
 
İstediğim ise şu ; Triggerlar anlık olarak açılıp kapandığında veritabanında hangi tabloya ne tür bir kayıt atıyor görebiliyor muyuz ?
Yani birisi tablodaki triggerı disable eder etmez anlık olarak mail gelmesini istiyorum. (Sorgusu ve tablosunu öğrenebilirsem, mail formatına ben çeviririm.)
 
Bu mümkün müdür ? 
 
Gönderildi : 09/10/2013 14:39

(@caglarozenc)
Gönderiler: 247
Reputable Member
 

Merhaba, 

Aslında bahsettiğiniz olayı belki biraz uzun bir yöntem olacak ama Profiler ile takip edebilirsiniz. 

SQL Server Profiler açıp, Trace Properties ekranında Event Selection da Show all eventsı seçerek bölümüne geçip Stored Procedure altında bulunan SP:StmtStarting veSP:StmtCompleted seçilerek dönen değerleri general bölümü altındaki save to table bölümünden bir tablo içerisinde yazarak istediğiniz takibi yapabilirsiniz aslında. 

Trace istediğiniz tabloya insert olduğu anda gelen inserted kaydını da mail olarak attırabilirsiniz diye düşünüyorum.

 
Gönderildi : 09/10/2013 14:50

(@RecepHazer)
Gönderiler: 4
New Member
 

Merhaba

 Mikrosoft DISABLE TRIGGER komutu malesef DDLTriger ları tetiklemiyor. Aynı şekilde profiler tarafındanda yakalanamıyor.

Aşşağıdaki linkte konu ile ilgili bilgi var.

http://connect.microsoft.com/SQLServer/feedback/details/509242/fire-a-ddl-trigger-when-the-new-syntax-disable-trigger-is-executed

Alter Triger icin ddl event mevcut fakat  Disable triger  komutu bunu tetiklemiyor. Mikrosoft dba ler için arka kapı bırakmış.

Büyük ihtimalle auditlerde de bu komutla ilgili bilgi olmayabilir. 

Geriye kulağımızı tersten kaşımak kalıyor. Belli süreler ile sys.triggers kontrol edip modify_date üzerinden son kontrol ettiğimiz andan itibaren

değişen bir kayıt var ise işlem yapmak.

Aşşağıdaki linklerde ddl trigerlar ile ilgili bilgi ve nasıl oluşturulabilecği ile ilgili bilgi mevcut

  http://technet.microsoft.com/en-us/library/ms175941.aspx

  http://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/

 

 
Gönderildi : 13/10/2013 15:13

(@FatihDEMiR)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

Cevaplarınız için teşekkürler.

Profiler ile incelediklerimden malesef bir şey yakalayamadım. Sys.objects ve sys.triggers var ama bunlar sanki view gibi çalışıyor.

Bana history lazımdı. Hangi kullanıcı , hangi veritabanında , hangi tablodaki, hangi trigger'ı disable etmiş o gerekiyordu bana. Ve anlık olarak.
Belirli sürelerde kurduğum işimi tam anlamıyla görmüyor. (Zaten job'lardan kendime mail attırıyorum belirlir süreler ile.) Ama kullanıcı 30 saniye içersinde triggerı disable edip istediğini yapabiliyor. Ve tekrar enable ediyor. Benim mail'ime de yakalanmıyor doğal olarak.

Sanırım Sql'de kullanıcı yetkilerine yönelerek çözüme gitmem gerekicek. Triggerları kapatmak gibi. Sadece view ve Store proc'ları gör gibi. Biraz inceleyeyim bu konuyu.

Bir de öğrenmek için şunu sorabilirim. sys.triggers ve sys.objects 'leri Sql management ile görebiliyor muyum ? Aynı bir tablo/view gibi nerede olduğu vs. Yoksa microsoft bunu arka planda herşeyi kendisi mi ayarlıyor. Kullanıcıya göstermiyor mu bunları ? 

 
Gönderildi : 13/10/2013 15:38

Paylaş: