Auditoría de base de datos
Tu siguiente tarea es desarrollar un nuevo trigger para auditar los cambios en los objetos de la base de datos.
Tienes que crear el trigger a nivel de base de datos. Puedes usar el grupo de eventos DDL_TABLE_VIEW_EVENTS para activar el trigger. Este grupo incluye cualquier operación de base de datos que afecte a tablas, vistas, índices o estadísticas. Al usar el grupo de eventos, no necesitas especificar todos los eventos de forma individual.
El trigger insertará detalles sobre la instrucción que lo dispara (evento, usuario, consulta, etc.) en la tabla DatabaseAudit.
Este ejercicio forma parte del curso
Crear y optimizar desencadenadores en SQL Server
Instrucciones del ejercicio
- Crea un trigger
DatabaseAuditen la base de datos que se active paraDDL_TABLE_VIEW_EVENTS.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
-- 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;