locked
Melhor log RRS feed

  • 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
    Niguma
    sexta-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
    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ível
    sexta-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/DBA
    sexta-feira, 18 de dezembro de 2009 12:54
    Moderador
  • 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.
    Niguma
    sexta-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
    sexta-feira, 18 de dezembro de 2009 20:21