ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Crea un trigger DatabaseAudit en la base de datos que se active para DDL_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;
Editar y ejecutar código