Audit database
Tugas Anda berikutnya adalah mengembangkan trigger baru untuk mengaudit perubahan objek database.
Anda perlu membuat trigger pada tingkat database. Anda dapat menggunakan grup event DDL_TABLE_VIEW_EVENTS untuk mengeksekusi trigger. Grup event ini mencakup setiap operasi database yang melibatkan tabel, view, indeks, atau statistik. Dengan menggunakan grup event, Anda tidak perlu menentukan semua event satu per satu.
Trigger akan menyisipkan detail tentang pernyataan pemicu (event, pengguna, kueri, dll.) ke dalam tabel DatabaseAudit.
Latihan ini adalah bagian dari kursus
Membangun dan Mengoptimalkan Trigger di SQL Server
Petunjuk latihan
- Buat trigger
DatabaseAuditpada database yang dieksekusi untukDDL_TABLE_VIEW_EVENTS.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
-- 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;