Začněte nyníZačněte zdarma

Auditování databáze

Tvým dalším úkolem je vytvořit nový trigger pro auditování změn databázových objektů.

Trigger musíš vytvořit na úrovni databáze. K jeho spuštění můžeš použít skupinovou událost DDL_TABLE_VIEW_EVENTS. Tato skupina zahrnuje všechny databázové operace týkající se tabulek, pohledů, indexů nebo statistik. Díky skupinové události nemusíš jednotlivé události zadávat zvlášť.

Trigger vloží podrobnosti o spouštěcím příkazu (událost, uživatel, dotaz apod.) do tabulky DatabaseAudit.

Toto cvičení je součástí kurzu

Tvorba a optimalizace triggerů v SQL Serveru

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř trigger DatabaseAudit na databázi, který se spustí při událostech DDL_TABLE_VIEW_EVENTS.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

-- 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;
Upravit a spustit kód