none
Recuperar registros deletados RRS feed

  • Pergunta

  • Bom dia pessoal,

    o usuário do sistema excluiu registros banco (usando o sistema que faz o padrão DELETE FROM TABLE) perdendo inúmeras informações. Existe alguma forma simples de recuperar esses dados?

    Por enquanto não tenho tabelas no banco que armazenam os dados deletados para backup e não sei se isso é o mais indicado. Para tentar resolver, eu já fiz inúmeras pesquisas na internet e achei esse código:

    SELECT [RowLog Contents 0] 
      FROM sys.fn_dblog(NULL, NULL) 
     WHERE AllocUnitName like '%dbo.NOME_TABELA%' 
       AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' ) 
       AND Operation in ( 'LOP_DELETE_ROWS' ) ;

    Eu fiz um teste e ele retornou três registros no formato hexadecimal, mas acho que não tá certo.

    Alguém tem uma ideia diferente?

    Obrigado.

    terça-feira, 12 de agosto de 2014 13:04

Respostas

  • Eugênio,

    Uma tentativa seria utilizar ferramentas que consigam realizer a leitura do arquivo de log do SQL Server e através desta leitura, fazer a restauração.

    Existem suites como: ApexSQL, Idera e Red-Gate.

    http://www.red-gate.com/products/dba/sql-log-rescue/


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 13 de agosto de 2014 20:01

Todas as Respostas

  • Parece que o programa Log rescue é bom pra isso, mas ele não consegue acessar a base de dados:

    Eu instalei um outro programa (Sql Server Admin) e ele consegue acessar o banco, não sei porque esse não consegue.

    terça-feira, 12 de agosto de 2014 14:28
  • Eugenio,

    O mais simples é voltar o último backup de log deste banco de dados. Para isso você vai precisar utilizar também o último backup FULL. 

    Veja um exemplo abaixo:

    RESTORE DATABASE SeuBanco
       FROM Disk = 'C:\BKPSeuBanco.bak'
       WITH 
    MOVE 'SeuBanco' TO 'D:\Bancos\SeuBanco.mdf',
    MOVE 'SeuBanco_Log' TO 'D:\Bancos\SeuBanco.ldf', NORECOVERY; GO
    RESTORE LOG Seubanco FROM Disk = 'C:\BKPLog.trn' WITH NORECOVERY; GO RESTORE DATABASE SeuBanco WITH RECOVERY; GO

    Para maiores informações leia:

    http://msdn.microsoft.com/pt-br/library/ms177446.aspx

    http://msdn.microsoft.com/en-us/library/ms189596.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    terça-feira, 12 de agosto de 2014 14:49
    Moderador
  • Durval,

    o problema é que não tem backup. Na pasta onde fica o arquivo do banco só tem arquivos .mdf e .ldf.

    terça-feira, 12 de agosto de 2014 14:54
  • Por favor, alguém tem alguma outra dica para recuperar registros deletados?
    quarta-feira, 13 de agosto de 2014 15:02
  • Eugênio,

    Uma tentativa seria utilizar ferramentas que consigam realizer a leitura do arquivo de log do SQL Server e através desta leitura, fazer a restauração.

    Existem suites como: ApexSQL, Idera e Red-Gate.

    http://www.red-gate.com/products/dba/sql-log-rescue/


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 13 de agosto de 2014 20:01
  • Junior,

    dessas ferramentas que vc indicou eu já tentei duas: ApexSQL e Red-Gate. O Apex é muito caro e não tem versão free (pelo menos não encontrei). Tem até a versão trial, mas recupera apenas 10 registros. O Red-Gate funciona só pra sql server 2000 e eu já estou usando o SQL Server 2008 R2.

    Vou ver se acho esse Idera free.

    Obrigado.

    quinta-feira, 14 de agosto de 2014 12:18