Usuário com melhor resposta
Recuperar registros deletados

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.
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
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 14 de agosto de 2014 18:08
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 14 de agosto de 2014 18:52
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.
- Editado Eugenio Junior terça-feira, 12 de agosto de 2014 14:34
-
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 RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
-
-
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
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 14 de agosto de 2014 18:08
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 14 de agosto de 2014 18:52
-
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.