Sugestões para a implementação de tabelas de auditoria no SQL Server?

votos
29

Um método simples que usei no passado é basicamente apenas criar uma segunda tabela cuja estrutura espelha o que eu quero fazer auditoria e, em seguida, criar um update / delete gatilho na tabela principal. Antes de um registro é atualizado / excluído, o estado atual é salvo com a tabela de auditoria via o gatilho.

Apesar de eficaz, os dados na tabela de auditoria não é o mais útil ou simples para relatar fora de. Eu estou querendo saber se alguém tem um método melhor para alterações de dados de auditoria?

Não deve haver muitas atualizações desses registros, mas é altamente informações sensíveis, por isso é importante para o cliente que todas as alterações são auditados e facilmente relatou.

Publicado 06/08/2008 em 19:39
fonte usuário
Em outras línguas...                            


6 respostas

votos
17

Quanto escrita vs. leitura desta tabela (s) que você espera?

Eu usei uma tabela de auditoria única, com colunas para Tabela, Coluna, OldValue, NewValue, usuário e ChangeDateTime - genérico o suficiente para trabalhar com quaisquer outras alterações no DB, e enquanto um monte de dados foi escrito para que a tabela, relatórios em que os dados foram esparso suficiente que poderia ser executado em períodos de pouca utilização do dia.

Adicionado: Se a quantidade de dados vs. relatórios é uma preocupação, a tabela de auditoria poderia ser replicado para um servidor de banco de dados somente leitura, o que lhe permite executar relatórios sempre que necessário sem atolar o servidor mestre de fazer o seu trabalho.

Respondeu 06/08/2008 em 19:51
fonte usuário

votos
6

Estamos usando dois design da tabela para isso.

Uma tabela é a exploração dos dados sobre transações (banco de dados, nome de tabela, esquema, coluna, aplicação que desencadeou transação, nome de host para o login que começou a transação, data, número de linhas afetadas e mais alguns).

Segunda tabela só é usado para armazenar as alterações de dados para que possamos desfazer as alterações, se necessário e informar sobre novos valores / idade.

Outra opção é usar uma ferramenta de terceiros para isso, como ApexSQL Audit ou recurso Change Data Capture no SQL Server.

Respondeu 10/05/2013 em 10:41
fonte usuário

votos
2

Eu encontrei esses dois links úteis:

Usando CLR e tabela de auditoria única.
Criando um gatilho de auditoria genérico com SQL 2005 CLR

Usando gatilhos e tabela de auditoria separada para cada tabela que está sendo auditada.
Como faço para auditar alterações de dados SQL Server?

Respondeu 01/09/2008 em 10:14
fonte usuário

votos
1

Eu uso a abordagem descrita por Greg em sua resposta e preencher a tabela de auditoria com um procedimento armazenado chamado dos gatilhos da tabela.

Respondeu 06/08/2008 em 21:23
fonte usuário

votos
1

OmniAudit pode ser uma boa solução para você precisa. Eu nunca usei isso antes porque eu sou muito feliz escrevendo minhas próprias rotinas de auditoria, mas soa bem.

Respondeu 06/08/2008 em 20:56
fonte usuário

votos
1

Existem quaisquer pacotes de auditoria embutidas? A Oracle tem um bom pacote, que vai mesmo enviar alterações de auditoria para um servidor separado, fora o acesso de qualquer má cara que está modificando o SQL.

O seu exemplo é incrível ... ele mostra como para alertar sobre qualquer modificação das tabelas de auditoria.

Respondeu 06/08/2008 em 19:49
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more