Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal,
Aqui na empresa temos uma tabela de log e triggers em todas as outras tabelas para auditoria, então tudo que é inserido, atualizado ou deletado em qualquer tabela é registrado em uma tabela de log, porém temos um processo, desenvolvido recentemente, que realiza em média 3000 inserts e updates em umas 4 ou 5 tabelas, e dependendo do momento esse número pode chegar a 10 mil inserts e updates facilmente.
Em todas as execuções a trigger da auditoria é ativada, e isso torna o processo demorado, algo em torno de 8 minutos, e durante esse tempo, por tudo isso estar dentro de uma transaction, as tabelas das quais faço inserts e updates ficam bloqueadas, parando o serviço de um setor inteiro aqui da empresa. Quando removi a trigger o mesmo processo levou 0.4 segundos, é uma diferença de performance absurda pra se ignorar, porém a auditoria também é imprescindível.
A questão é, se eu conseguir ler o arquivo LDF, e saber por ex: Quem criou o cliente X, quem atualizou? Quando foi atualizado? quando foi criado? se foi deletado, quem deletou e quando?, se conseguir resolver esse tipo de questão com o arquivo LDF, eu posso abandonar essas triggers da auditoria. Alguém sabe me explicar uma forma de eu conseguir resolver isso só com o LDF? Meu sql server é o 2012, 64 bits.
Já tentei alguns programas (SQL Log rescue (só funciona no 2000), Apex SQL Log (terrívelmente lento)). Alguém tem alguma outra idéia?
Obrigado.
Auditoria em bancos tem que ter um planejamento bom, com banco em paralelo (snapshot, por exemplo)
O problema de trigger é que ele todos os registros da tabela, um a um.
De uma lida nestes links:
http://technet.microsoft.com/pt-br/library/cc280386.aspx
http://technet.microsoft.com/pt-br/library/cc280728.aspx
Vai pelo menos te dar uma luz sobre o assunto.
Qto a abrir o LDF, depende muito inclusive de como se faz o backup.
Se nao me engano tem um software da redgate que faz isso, mas acho que só até o SQL2008