Birisi veritabanımızda bir tetikleyici ENABLE ya da DEVRE DIŞI BIRAKMA girişiminde bulunduğunda denetleme yöntemine ihtiyacım var. DDL tetikleyicisi alternatif harika ama sadece kullanıcıDISABLE/ENABLE Tetikleyicileri Denetimi SQL
ALTER TABLE <tableName> ENABLE TRIGGER <triggerName>
VEYA
ALTER TABLE <tableName> DISABLE TRIGGER <triggerName>
deyimi kullandığında için koşul altında çalışır. Ben onlardan bu olaylar hiçbiri işe yakalayan çeşitli düşünceler vardı
DISABLE TRIGGER <triggerName> ON <tableName>
ENABLE TRIGGER <triggerName> ON <tableName>
: Kullanıcı ALTER komutu bypass şu ifadeleri yürütür eğer tespit ettik kadarıyla, DDL yöntemi işe yaramaz hale getirir. Bunlardan biri, sys.triggers görünümünün altında yatan tabloya erişebilseydim, o tabloya bir ekleme/güncelleme tetikleyicisi yerleştirebilir ve denetimi elde etmek için tetikleyici ismine filtre uygulayabilirdim; ama benim şüphem, yapılması mümkün olsa bile, sonsuz bir tekrarlamaya yol açacağıdır.
Bu soruna alternatif çözümler için herhangi birinin olası önerileri var mı? MS'nin neden daha iyi ifade sürümlerinin denetimlerin kapsamından kaçmasına izin vereceğini anlamıyorum. Yani, en basit yöntemlerden denetim; SQL profiler kullanarak bunun için gereksiz bir yük olarak görünüyor.
Wow - ENABLE TRIGGER ... ON ... sözdizimi SQL 2008 DDL Denetimi'ni atlıyor mu? http://msdn.microsoft.com/en-us/library/dd392015(v=sql.100).aspx – StuartLC
Sadece DML, birisinin DDL tetikleyicilerini devre dışı bırakabileceği gibi, tetiği de tetikleyebilirler mi? Bu, bence varsayılan izde kaydedilir. –
Evet, birisi DML tetikleyiciyi DISABLE TRIGGER ON sözdizimini kullanarak devre dışı bırakacak olsaydı, bu olayı bir DDL tetikleyicisi aracılığıyla yakalamanın hiçbir yolu olmazdı. –
Mark