Como recuperar dados do SQL Server devido a uma operação UPDATE e DELETE acidental

O pior pesadelo para DBAs em SQL é perder dados devido ao próprio erro. Não é incomum para alguns, executar inapropriadamente ou até esquecer a cláusula WHERE quando executado um comando DELETE ou UPDATE, potencialmente resultando em um comprometimento de alguns milhões de dados.

Então, quais opções de recuperação de dados do SQL Server estão disponíveis?

A solução poderia ser a de usar um backup realizado antes do desastre.

As soluções mais comuns para recuperar os dados perdidos usando um backup do banco de dados são:

  1. Restaurar o backup do banco de dados e usá-lo ao invés da base de dados original
  2. Caso contrário
    • Restaurar o backup no mesmo servidor da base de dados original usando um outro nome de banco de dados
    • Localizar os dados relevantes na base de dados recuperada
    • Atualizar os dados errados usando os dados originais do banco de dados recuperado

Infelizmente, raramente o cenário de recuperação é tão “simples e prático” permitindo uma solução simples.

Explicando melhor:

  • Os erros não foram detectados em tempo suficiente
  • Houveram outras alterações de dados entre a criação do backup da base de dados e a execução do comando, que complicaram significativamente a recuperação
  • Entrada de novos dados
  • Os backups da base de dados não eram feitos regularmente ou nunca foram feitos


A solução para seus problemas

Ler as informações do transaction logs online, backups de transaction log ou transaction logs desanexados, a fim de recuperar os dados da base de dados, é uma opção para recuperar os dados.
ApexSQL Log é uma ferramenta de recuperação para o SQL Server capaz de ler dados de transaction log e recuperar os dados da base de dados perdidas voltando ao seu estado original.

Para recuperar dados devido a uma operação UPDATE e DELETE acidental usando ApexSQL Log:

    1. Inicie ApexSQL Log
    2. Conecte-se à base de dados
    3. No passo Select SQL logs to analyze, adicione o backup do transaction log e transaction logs desanexados que você deseja ler. Note que ele tem que formar uma sequência completa a fim de gerar uma auditoria com sucesso. Adicionar um backup da base de dados pode ajudar a melhorar a performance e a qualidade de dados da auditoria.

    4. Use a opção de Filter setup para filtrar a pesquisa usando o tempo, tipo de operação, nome de tabelas, usuário e outras opções de filtro

 

  • Após configurar todas as opções, clique Open

 

Suas transações serão listadas na grade principal da aplicação. Você pode também, usar o Filter no painel esquerdo para eliminar transações desnecessárias

Para realizar a recuperação dos dados, marque as transações que você deseja reverter e clique Create undo script na guia Actions

Para executar o script no editor de script, clique o botão Execute ou pressione o botão F5 e será recuperado os dados perdidos no banco de dados.

Então se lembre, se você involuntariamente usou o DELETE/UPDATE, você ainda pode recuperar os dados perdidos no banco de dados, em muitos casos, usando o ApexSQL Log

Tradução: Ricardo Leka Roveri

September 2, 2015