Mulai sekarangMulai gratis

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 merupakan bagian dari kursus

Membangun dan Mengoptimalkan Trigger di SQL Server

Lihat Kursus

Instruksi latihan

  • Buat trigger DatabaseAudit pada database yang dieksekusi untuk DDL_TABLE_VIEW_EVENTS.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

-- 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;
Edit dan Jalankan Kode