Kom igångKom igång gratis

Databasgranskning

Din nästa uppgift är att skapa en ny trigger för att granska ändringar av databasobjekt.

Du behöver skapa triggern på databasnivå. Du kan använda grupphändelsen DDL_TABLE_VIEW_EVENTS för att utlösa triggern. Den här grupphändelsen omfattar alla databasoperationer som berör tabeller, vyer, index och statistik. Genom att använda grupphändelsen behöver du inte ange varje enskild händelse separat.

Triggern infogar information om den utlösande satsen (händelse, användare, fråga osv.) i tabellen DatabaseAudit.

Den här övningen är en del av kursen

Bygga och optimera triggers i SQL Server

Visa kurs

Övningsinstruktioner

  • Skapa en trigger med namnet DatabaseAudit på databasen som aktiveras vid DDL_TABLE_VIEW_EVENTS.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

-- 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;
Redigera och kör kod