Database ऑडिटिंग
आपका अगला कार्य डेटाबेस ऑब्जेक्ट परिवर्तनों का ऑडिट करने के लिए एक नया ट्रिगर तैयार करना है.
आपको ट्रिगर डेटाबेस स्तर पर बनाना है। आप ट्रिगर को फायर करने के लिए DDL_TABLE_VIEW_EVENTS ग्रुप इवेंट का उपयोग कर सकते हैं। इस ग्रुप इवेंट में टेबल, व्यू, इंडेक्स या स्टैटिस्टिक्स से जुड़ा कोई भी डेटाबेस ऑपरेशन शामिल होता है। ग्रुप इवेंट का उपयोग करने पर आपको हर इवेंट को अलग से बताने की ज़रूरत नहीं रहती.
ट्रिगर फायर होने वाले स्टेटमेंट (इवेंट, यूज़र, क्वेरी, आदि) का विवरण DatabaseAudit टेबल में इंसर्ट करेगा.
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Triggers बनाना और उनका अनुकूलन
अभ्यास निर्देश
- डेटाबेस पर
DDL_TABLE_VIEW_EVENTSके लिए फायर होने वालाDatabaseAuditट्रिगर बनाएँ.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
-- Create a new trigger
CREATE TRIGGER ___
-- Attach the trigger at the database level
ON ___
-- Fire the trigger for all tables/ views events
FOR ___
AS
INSERT INTO DatabaseAudit (EventType, DatabaseName, SchemaName, Object, ObjectType, UserAccount, Query, EventTime)
SELECT EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]', 'NVARCHAR(50)') AS EventType
,EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]', 'NVARCHAR(50)') AS DatabaseName
,EVENTDATA().value('(/EVENT_INSTANCE/SchemaName)[1]', 'NVARCHAR(50)') AS SchemaName
,EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]', 'NVARCHAR(100)') AS Object
,EVENTDATA().value('(/EVENT_INSTANCE/ObjectType)[1]', 'NVARCHAR(50)') AS ObjectType
,EVENTDATA().value('(/EVENT_INSTANCE/LoginName)[1]', 'NVARCHAR(100)') AS UserAccount
,EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'NVARCHAR(MAX)') AS Query
,EVENTDATA().value('(/EVENT_INSTANCE/PostTime)[1]', 'DATETIME') AS EventTime;