Utilização de triggers para auditoria

SQL Server

14/10/2004

Fala pessoal blz ??

alguem tem exemplos de como utilizar triggers para auditoria ?? como por exemplo se um usuário alterar ou excluir dados de uma tabela, essa informação ser armazenada em uma tabela de auditoria.

Agradeço pela ajuda,


Felipe_cduarte

Felipe_cduarte

Curtidas 0

Respostas

Robertolucio

Robertolucio

14/10/2004

Oi Felipe,

Cara estou tentando isso tbém, mas por enquanto não consegui. Se descobrires algo, por favor retorna.

Att,
Roberto


GOSTEI 0
Marcus.magalhaes

Marcus.magalhaes

14/10/2004

Bom dia Felipe e Roberto.

Vc podem utilizar as tabelas [b:9e6dc1c5c4]inserted[/b:9e6dc1c5c4] e [b:9e6dc1c5c4]deleted[/b:9e6dc1c5c4] para isso.

Ex.:
Create Trigger trg_tabela On tabela for update, delete
As
Begin
Insert Into audit_table_deleted (codigo, desc)
Select codigo, desc
  From deleted

Insert Into audit_table_inserted (codigo, desc)
Select codigo, desc
  From inserted
End
GO


Onde [b:9e6dc1c5c4]deleted[/b:9e6dc1c5c4] é a tabela que armazena os dados que foram apagados e [b:9e6dc1c5c4]inserted[/b:9e6dc1c5c4] os que foram inseridos, no caso do update ele popula as 2 tabelas.

Att,


GOSTEI 0
Felipe_cduarte

Felipe_cduarte

14/10/2004

Fala Marcus blz ???

po eu dei uma pesquisada sobre o inserted e o deleted e resolveu parcialmente meu problema hehehe .. eu preciso agora pegar o usuario q fez a alteração, só q nao posso utilizar o login do nt ( com a funcao system_user() ) pq nos sistemas da minha empresa utilizamos um controle de acesso ( q é um sistema desenvolvido aki tb ) ... nele temos as tabelas e controlamos o acesso aos módulos nas aplicações... estava pensando .. só se esse sistema na hora q cadastrar os usuários incluir no SQL Server um usuario (login via SQL ) tb.. vc acha viavel ??

[]´s


GOSTEI 0
Marcus.magalhaes

Marcus.magalhaes

14/10/2004

Oi Felipe.

O q vc pode fazer então é:

- Fazer com que o usuário se logue no sistema com um usuário válido no sql server;
- Armazenar este usuário em uma variável; e
- quando salvar os dados da inserted e da deleted, acrescentar a informação do usuário.

Eu também postei uma resposta para a Ligia (http://delphiforum.icft.com.br/forum/viewtopic.php?t=50984) sobre uma forma de fazer auditoria, capturando todos os comandos executados por todos os usuários. Dá uma olhada lá e vê se te atende.

Att,


GOSTEI 0
Felipe_cduarte

Felipe_cduarte

14/10/2004

Fala Marcus blz ???

Acho q vamos ter q implementar isto nos sistemas mesmo... mas voltando ao assunto do usuario válido no sql, eu nao entendi esse armazenamento do usuario em uma variavel... se ele estiver cadastrado, com a função system_user() eu nao consigo pegar ele ??

minha trigger:

CREATE TRIGGER trg_teste
ON tab_clientes
for update
AS
BEGIN
insert into tab_clientes_audt ( ccliente, ncliente, cpfcliente, data, usuario )
select ccliente,
ncliente,
cpfcliente,
GETDATE(),
system_user
from deleted
END

+- isso né hehehe

[]´s





GOSTEI 0
Marcus.magalhaes

Marcus.magalhaes

14/10/2004

Bom dia Felipe.

Isso mesmo...tb dá.

Att,


GOSTEI 0
POSTAR