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
Instruções do exercício
- Crie um trigger
DatabaseAuditno banco de dados que dispare paraDDL_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;