Recuperar dados SQL de uma tabela apagada sem backups

Se você acidentalmente executou um comando de DROP e tem um backup FULL do banco de dados, considerando que nenhuma alteração na tabela foi realizada após a exclusão, você pode simplesmente recuperar os dados sobrescrevendo o banco original utilizando o backup. Entretanto, se este não é o caso, ou porque o objeto do banco de dados e os dados foram modificados após o comando de DROP no SQL ser executado ou porque você não tem um backup do banco de dados válido, há ainda um modo para recuperar todos os seus dados perdidos.

Ou seja, cada operação DROP é registrada no transaction log. Isto significa que o transaction log armazena a informação necessária para reverter a transação e, uma vez que o banco de dados está em modo de recuperação FULL, suporta uma recuperação point-in-time de uma operação DROP.

Uma vez que o DROP é registrado no transaction log, ele pode ser revertido se este foi especificado dentro de um encapsulamento ativo. Por exemplo, a seguinte query SQL:

DROP TABLE Customer

SELECT *
FROM Customer

Resultará a mensagem de erro Msg 208, Level 16, State 1 como se a tabela Customer tivesse sido apagada.

Entretanto, o seguinte código SQL:

BEGIN TRAN 
DROP TABLE Customer

ROLLBACK 
SELECT *
FROM Customer

retornará todas as linhas da tabela Customer como se a operação DROP tivesse sido revertida.

Contudo, se a transação contiver a operação DROP não estiver mais ativa, por exemplo, desde de que foi comitada, a tabela apagada pode não ser revertida, e reciprocamente o dado armazenado será perdido também. Isto significa que você não poderá recuperar os dados perdidos devido a operação DROP se não houver um backup da base de dados disponível?

Felizmente, não. Aqui é onde o ApexSQL Recovery entra na jogada:

ApexSQL Recover é uma ferramenta de recuperação para banco de dados SQL Server, na qual recupera dados que foram apagados, truncados, corrompidos ou danificados. Este recupera objetos e dados perdidos devido a operação DROP e restaura BLOBs deletados ou como arquivos online, tornando-o ideal para recuperações de SharePoint.

Para recuperar dados perdidos por uma operação DROP sem backup:

  1. Inicie o ApexSQL Recover
  2. Selecione a opção Recover lost data due to a DROP operation
  3. Em Select the database to recover execute:
    • Especifique a instância SQL do banco de dados que você deseja recuperar, na lista suspensa Server
    • Especifique o método de autenticação para a instância SQL (e uma credencial válida, se você optar pela autenticação SQL Server)
    • Especifique o nome do banco de dados que contêm as tabelas apagadas na lista suspensa Database

    e clique Next

  4. No passo Are additional data sources available?, selecione a opção No additional transaction logs are available

  5. No passo Select a recovery action, selecione a opção Save recovery script to file e especifique o caminho onde será gravado o script T-SQL que irá inserir todos os dados perdidos quando executado

  6. Clique Recover

E com isso, você conseguirá recuperar seus dados perdidos sem ter um único backup da base de dados SQL.

Tradutor: Ricardo Leka

September 2, 2015