में अक्षम/सक्षम ट्रिगर्स के लिए लेखापरीक्षा जब कोई हमारे डेटाबेस में एक ट्रिगर को सक्षम या अक्षम करने का प्रयास करता है तो मुझे ऑडिट करने का एक तरीका चाहिए। DDL ट्रिगर विकल्प महान लेकिन केवल तभी जब उपयोगकर्ता का उपयोग करताएसक्यूएल
ALTER TABLE <tableName> ENABLE TRIGGER <triggerName>
या
ALTER TABLE <tableName> DISABLE TRIGGER <triggerName>
बयान के लिए शर्त के तहत काम करता है। मैं क्या निर्धारित किया है से, DDL विधि बेकार renders उपयोगकर्ता निम्नलिखित बयान है कि ALTER आदेश बाईपास कार्यान्वित करता है, तो:
DISABLE TRIGGER <triggerName> ON <tableName>
ENABLE TRIGGER <triggerName> ON <tableName>
मैं कब्जा इन घटनाओं उनमें से कोई भी काम पर कई विचार किया है। इनमें से एक था अगर मैं sys.triggers दृश्य के अंतर्गत तालिका तक पहुंच सकता था, तो मैं उस तालिका पर एक सम्मिलित/अद्यतन ट्रिगर रख सकता था और ऑडिट प्राप्त करने के लिए ट्रिगर नाम पर फ़िल्टर कर सकता था; लेकिन मेरा संदेह यह है कि यह संभवतः अनंत पुनरावृत्ति का कारण बनता है, भले ही ऐसा करना संभव हो।
क्या किसी के पास इस समस्या के वैकल्पिक समाधान के लिए कोई संभावित सुझाव है? मुझे समझ में नहीं आ रहा है कि क्यों एमएस लेखा परीक्षा के दायरे से बचने के लिए कथन के उन्नत संस्करणों की अनुमति देगा। यही है, सबसे सरल तरीकों से लेखा परीक्षा; एसक्यूएल प्रोफाइलर का उपयोग इस के लिए अनचाहे ओवरहेड लगता है।
वाह - क्या आप कह रहे हैं कि सक्षम ट्रिगर ... चालू ... वाक्यविन्यास एसक्यूएल 2008 डीडीएल ऑडिट को बाईपास करता है? http://msdn.microsoft.com/en-us/library/dd392015(v=sql.100).aspx – StuartLC
बस डीएमएल संभवतः ट्रिगर करता है जैसे कि कोई डीडीएल ट्रिगर्स को अक्षम कर सकता है, वे आपके ऑडिट ट्रिगर को भी अक्षम कर सकते हैं? यह मुझे लगता है कि डिफ़ॉल्ट निशान में दर्ज किया गया है। –
हाँ, कोई वाक्य रचना अक्षम TRIGGER पर तो मैं एक DDL ट्रिगर के माध्यम से उस घटना पर कब्जा करने का कोई तरीका नहीं होता है का उपयोग कर मेरी DML ट्रिगर निष्क्रिय करने के लिए थे। –
Mark