
Use BaseDados
go
Create TRIGGER [DBTR_Teste_Drop_Create]
ON DATABASE
FOR DDL_TABLE_VIEW_EVENTS
AS
DECLARE @data xml
DECLARE @cmd nvarchar(350)
DECLARE @logMsg nvarchar(400)
SET @data = eventdata()
SET @cmd = @data.value
('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'nvarchar(350)')
SET @logMsg = @cmd + ' (' + SYSTEM_USER + ' on ' + HOST_NAME() + ')'
RAISERROR (@logMsg, 10, 1) WITH LOG
-- Para Visualizar o Comando executado
-- select @cmd
-- Aqui não permitimos criar objectos na base de dados (Exemplo: Create Table)
-- pois efectuamos o rollback
if left(@cmd,6)='Create'
rollback
-- Aqui não permitimos apagar objectos na base de dados (Exemplo: drop table)
-- pois efectuamos o rollback
if left(@cmd,4)='drop'
rollback
Nota: podemos criar uma tabela com as variáveis com o tipo indicado e inserir os erros