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
Instructions
- Créez un trigger
DatabaseAuditsur la base de données qui se déclenche pourDDL_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;