ComeçarComece de graça

Auditoria de banco de dados

Sua próxima tarefa é desenvolver um novo trigger para auditar alterações em objetos do banco de dados.

Você precisa criar o trigger no nível do banco de dados. Você pode usar o grupo de eventos DDL_TABLE_VIEW_EVENTS para disparar o trigger. Esse grupo de eventos inclui qualquer operação no banco envolvendo tabelas, views, índices ou estatísticas. Ao usar o grupo de eventos, você não precisa especificar todos os eventos individualmente.

O trigger vai inserir detalhes sobre a instrução que o disparou (evento, usuário, consulta etc.) na tabela DatabaseAudit.

Este exercício faz parte do curso

Criando e Otimizando Triggers no SQL Server

Ver curso

Instruções do exercício

  • Crie um trigger DatabaseAudit no banco de dados que dispare para DDL_TABLE_VIEW_EVENTS.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

-- 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 e executar o código