CommencerCommencer gratuitement

Audit de base de données

Votre prochaine mission consiste à développer un nouveau trigger pour auditer les modifications des objets de la base de données.

Vous devez créer le trigger au niveau de la base de données. Vous pouvez utiliser le groupe d’événements DDL_TABLE_VIEW_EVENTS pour déclencher le trigger. Ce groupe couvre toute opération sur les tables, vues, index ou statistiques. En utilisant ce groupe, vous n’avez pas besoin de préciser chaque événement individuellement.

Le trigger insérera des informations sur l’instruction déclenchée (événement, utilisateur, requête, etc.) dans la table DatabaseAudit.

Cet exercice fait partie du cours

Créer et optimiser des déclencheurs dans SQL Server

Afficher le cours

Instructions

  • Créez un trigger DatabaseAudit sur la base de données qui se déclenche pour DDL_TABLE_VIEW_EVENTS.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

-- 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;
Modifier et exécuter le code