MulaiMulai sekarang secara 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 adalah bagian dari kursus

Membangun dan Mengoptimalkan Trigger di SQL Server

Lihat Kursus

Petunjuk latihan

  • Buat trigger DatabaseAudit pada database yang dieksekusi untuk DDL_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;
Edit dan Jalankan Kode