Utilização de triggers para auditoria
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,
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
Curtidas 0
Respostas
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
Cara estou tentando isso tbém, mas por enquanto não consegui. Se descobrires algo, por favor retorna.
Att,
Roberto
GOSTEI 0
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.:
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,
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
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
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
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,
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
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
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
14/10/2004
Bom dia Felipe.
Isso mesmo...tb dá.
Att,
Isso mesmo...tb dá.
Att,
GOSTEI 0