Como consultar os arquivos de log (.ldf) do SQL Server 2005 Express Edition?
-
23-09-2019 - |
Pergunta
Quero fazer isso, porque gostaria de saber quantas vezes uma linha específica foi alterada.
Isso é possível?
Obrigado
Solução
A leitura do arquivo de log leva uma ferramenta comercial ou uma quantidade incrível de conhecimento interno da SQL para alcançar. Você pode ver parte da saída bruta usando: selecione * de :: fn_dblog (nulo, nulo)
Na verdade, a decodificação para encontrar o mesmo registro sendo alterada e garantir que qualquer alteração fosse cometida etc. seria uma tarefa difícil de colocá -lo de ânimo leve. Portanto, é 'possível', mas não muito 'provável', que você possa fazê -lo.
Se você precisar dessa funcionalidade em um banco de dados, deve procurar gatilhos / lógica dentro do código.
Outras dicas
Resposta tardia, mas espero que seja útil para novos leitores…
Mais uma função que você pode experimentar é o log do DBCC, mas infelizmente essa é uma função indocumentada igual a fn_dblog.
O problema com o log de transações no SQL Server é que ele nunca foi para ser usado para isso, mas apenas para permitir propriedades de recuperação e transação do ponto no tempo.
Há um comercial Log Reader do ApexSQL que você pode tentar.
Aqui também estão alguns posts semelhantes que podem levar você na direção certa.
você pode usar este programa para fazer isso http://www.red-gate.com/products/sql_log_rescue/index.htm
Considere usar o SQL Server 2008.
Há um recurso novo no SQL Server 2008 chamado Alterar captura de dados Isso faz exatamente o que você precisa, ou seja, rastrear modificações de dados ao longo do tempo.
Procurar inspecionar o arquivo de log para rastrear alterações não é uma prática sábia. Isso fornecerá um histórico limitado, cujo escopo também dependeria do modelo de recuperação que você usa para o seu banco de dados.
Você pode "rolar sua própria solução" com uma pequena quantidade de desenvolvimento, usando uma tabela de log e preenchendo -a usando gatilhos do SQL Server. A adequação de tal solução depende, obviamente, do seu caso de negócios.
Dê uma olhada no seguinte artigo do Technet para uma leitura interessante: