Usuário com melhor resposta
Melhor log

Pergunta
-
Caros colegas,
tenho uma aplicação em C# acessando MS-SQL Server 2000.
Precisamos registrar um histórico de modificações no banco de dados. Principalmente a cada alteração seria preciso armazenar qual o atributo alterado, qual o novo valor do atributo, o valor antigo, a data, a hora e quem alterou. O pessoal começou a fazer isso via C#, na mão. O MS-SQL Server consegue nos dar essa informação? Indicariam-me um tutorial para isso?
Valeu.
Niguma
Nigumasexta-feira, 18 de dezembro de 2009 12:08
Respostas
-
Olá Niguma,
O 2008 evoluiu e apresenta os recursos de Change Tracking e Change Data Capture. O 2005 é um pouco mais volátil, mas fica com boas das limitações do 2000 (o uso do XML com a Column_Update é que é o diferencial).
O "tão falado log" tem essas e muitas outras informações. O problema é que seu formato é proprietário e você não terá acesso a ele. Mesmo que use ferramentas próprias para leitura do log, elas não disponibilizam APIs e você não conseguirá integrá-las ao seu aplicativo.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
SQL Server Saturday Night
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!878.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Junior Galvão - MVPMVP, Moderator terça-feira, 7 de janeiro de 2020 18:35
sexta-feira, 18 de dezembro de 2009 20:21
Todas as Respostas
-
Bom Dia,
O SQL Server 2000 não fornece muitos recursos para isso (a exemplo do 2008). O que você pode fazer é utilizar a triggers com o uso da função Columns_Update para tentar descobrir a coluna alterada. As tabelas Inserted e Deleted fornecem as visões antes e depois da alteração
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
SQL Server Saturday Night
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!878.entry
Classifique as respostas. O seu feedback é imprescindívelsexta-feira, 18 de dezembro de 2009 12:21 -
Niguma,
Concordo com o Gustavo, a única observação que faço, esta relacionada a utilização do trigger, pois se o volume de alterações em suas colunas foi muito grande e o seu trigger não foi bem programado, você poderá ter problemas de perfomance.
A ideia é excelente, mas é necessário criar um bom cenário de testes para evitar qualquer surpresa em seu ambiente de produção.
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBAsexta-feira, 18 de dezembro de 2009 12:54Moderador -
Caro Gustavo,
o 2005 e o 2008 já têm recursos para isso?
O tão falado log não me retorna uma informação parecida?
Valeu.
Nigumasexta-feira, 18 de dezembro de 2009 16:44 -
Olá Niguma,
O 2008 evoluiu e apresenta os recursos de Change Tracking e Change Data Capture. O 2005 é um pouco mais volátil, mas fica com boas das limitações do 2000 (o uso do XML com a Column_Update é que é o diferencial).
O "tão falado log" tem essas e muitas outras informações. O problema é que seu formato é proprietário e você não terá acesso a ele. Mesmo que use ferramentas próprias para leitura do log, elas não disponibilizam APIs e você não conseguirá integrá-las ao seu aplicativo.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
SQL Server Saturday Night
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!878.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Junior Galvão - MVPMVP, Moderator terça-feira, 7 de janeiro de 2020 18:35
sexta-feira, 18 de dezembro de 2009 20:21