ÎncepețiÎncepe gratuit

Auditarea bazei de date

Următoarea sarcină este să creezi un nou trigger pentru a audita modificările obiectelor din baza de date.

Trebuie să creezi trigger-ul la nivelul bazei de date. Poți folosi evenimentul de grup DDL_TABLE_VIEW_EVENTS pentru a declanșa trigger-ul. Acest eveniment de grup include orice operațiune asupra tabelelor, vizualizărilor, indexurilor sau statisticilor. Folosind evenimentul de grup, nu mai trebuie să specifici individual fiecare eveniment.

Trigger-ul va insera detalii despre instrucțiunea care l-a declanșat (eveniment, utilizator, interogare etc.) în tabelul DatabaseAudit.

Acest exercițiu face parte din cursul

Crearea și optimizarea triggerelor în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează un trigger DatabaseAudit la nivelul bazei de date, care să se declanșeze pentru DDL_TABLE_VIEW_EVENTS.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

-- 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;
Editează și rulează codul