sexta-feira, 5 de junho de 2009

Mais um apontamento nesta rubrica que eu pretendo que seja uma mais valia e como tal acrescente saber. Posto isto, hoje vou-te falar dos Database Triggers estes servem para várias funções referente a auditoria das nossas base de dados em que alteramos as tabelas e necessitamos de colocar numa tabela para efeitos de auditoria. Vou então mostrar-te com um exemplo para evitar que tabelas sejam apagadas ou criadas, atenção é só um exemplo.

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

Sem comentários:

Enviar um comentário