none
TRANSACTION RRS feed

  • Pergunta

  • Ola!!

    Gostaria de saber como o sql server 2008 r2 gerenciam os comandos sql antes de dar o COMMIT. Se os dados antes do COMMIT são armazenados em uma tabela auxiliar,log ou temporaria.

    Pois em uma aplicação que estou a desenvolver preciso saber quais os eventuais comando sql.

     

    Grato

     

    Manoel Valerio


    MCTS Web 3.5
    • Movido Gustavo Maia Aguiar sábado, 26 de fevereiro de 2011 14:36 (De:SQL Server - Desenvolvimento Geral)
    sábado, 26 de fevereiro de 2011 13:17

Respostas

  • Bom Dia,

    O SQL Server não armazena os comandos antes de um COMMIT. Quando uma consulta que altera dados é disparada ele altera as páginas de dados em memória juntamente com o registro no log de transações. O log não grava o comando, apenas as páginas afetadas e as alterações. Posteriormente um processo chamado CHECKPOINT faz o DUMP das páginas registradas no arquivo de log para o arquivo MDF (por isso é importante ter sempre o arquivo MDF e o LDF durante o processo de Attach e não somente o MDF como alguns insistem em fazer)

    Se você necessita saber os comandos SQL disparados, você deve optar por implementar a auditoria (que é capaz de capturar comandos SELECT inclusive) ou montar um SQL Trace (acho que a auditoria é mais confiável por "sobreviver" a uma possível reinicialização). O uso do Default trace também é uma opção.

    Caso esses recursos não sejam suficientes, recomendo que a aplicação guarde o comando em algum lugar antes de submetê-lo

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar sábado, 26 de fevereiro de 2011 14:36
    • Marcado como Resposta Manoel N sábado, 26 de fevereiro de 2011 15:12
    sábado, 26 de fevereiro de 2011 14:36