Audit de la base de données
Votre prochaine tâche consiste à élaborer un nouveau déclencheur pour consigner les modifications apportées aux objets de la base de données.
Vous devez créer le déclencheur au niveau de la base de données. Vous pouvez utiliser le groupe d'événements DDL_TABLE_VIEW_EVENTS pour déclencher le déclencheur. Ce groupe d'événements couvre toute opération de base de données touchant les tables, les vues, les index ou les statistiques. En utilisant ce groupe, vous n'avez pas besoin d'énumérer chaque événement individuellement.
Le déclencheur insérera des détails sur l'instruction déclenchée (événement, utilisateur, requête, etc.) dans la table DatabaseAudit.
Cette activité fait partie du cours
Création et optimisation de déclencheurs dans SQL Server
Instructions de l’exercice
- Créez un déclencheur
DatabaseAuditsur la base de données qui se déclenche pourDDL_TABLE_VIEW_EVENTS.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- 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;