Como reverter os dados de tabela excluídos?

6

Eu apaguei uma tabela acidentalmente, como posso reverter isso. Por favor, sugira isso.

    
por Simhadri 24.09.2010 / 22:51

7 respostas

12

Obtenha a partir de backups!

    
por 24.09.2010 / 22:52
9

Como Joe Stefanelli disse, as ferramentas ApexSQL podem ajudar. Na verdade, existem duas ferramentas - se a tabela inteira foi descartada - ApexSQL Recover. Se apenas os registros da tabela forem excluídos, o ApexSQL Log e o ApexSQL Recover poderão ajudar.

A limitação de ambas as ferramentas durante o teste é que elas recuperam apenas 1 de 10 transações. A boa notícia é que o ApexSQL Log mostra todos os registros na grade, mesmo em teste, para que você possa ver os registros que podem ser recuperados. A limitação é que você não pode criar o script undo para todos eles até que você licencie a ferramenta

As ferramentas podem trazer de volta os dados mesmo se você não tiver um backup de banco de dados completo ou diferencial ao ler o arquivo de dados (ApexSQL Recover) e o log de transações (LDF e trn - online, desanexados, backups - Log ApexSQL)

4 técnicas para recuperar tabelas perdidas devido ao DROP Operação da tabela

Disclaimer: Eu trabalho para o ApexSQL como um engenheiro de suporte

    
por 17.01.2014 / 15:50
4

Se você não tiver um bom backup, você pode usar uma ferramenta de terceiros como ApexSQL Log . Eu não sei quais são as limitações da versão de avaliação gratuita, mas pode valer a pena uma tentativa.

    
por 24.09.2010 / 22:57
4

Se você tiver backups, siga o procedimento descrito em Como recuperar uma tabela ou linhas específicas de backups de banco de dados ou de log de transações em SQL Server :

  • Back up the current transaction log
    Back up your current transaction log with the NO_TRUNCATE option.

  • Restore a partial or full database backup
    SQL Server 2000 or SQL Server 2005 If your backup strategy includes filegroup backups, you can perform a partial database restore to a different location and restore only the part of the database that contains the table that you want to retrieve. See the following references for more information about how to restore a database to a different name and location: How to restore files to a new location (Transact-SQL)

  • Restore transaction log backups by using the STOPAT option
    Restore the transaction log backups to the partial or full database restore and stop before the point in time when the table or rows were deleted. Use the STOPAT option of RESTORE LOG command to stop the transaction log restore and to recover the database before the time when the table was deleted. See How to restore to a point in time

  • Retrieve data
    After you restore the database, you can copy the table or rows back to your original database by using either INSERT, Bcp (Bulk Copy Utility) or SELECT INTO. ...

  • DBCC CHECKTABLE
    Run the DBCC CHECKTABLE Transact-SQL reference on the new table to verify the integrity of the data.

Eu omiti os detalhes, você pode seguir o link para o artigo da KB para uma cobertura completa do tópico.

    
por 25.09.2010 / 01:44
1

Algumas pessoas mencionaram ferramentas de terceiros. O único que eu pessoalmente tive alguma sorte com a reprodução do log de transações é o Toad by Quest . Não é muito barato, mas se é importante, é um salva-vidas. Tivemos alguns aplicativos da web mal escritos que foram atacados por injeções de SQL e arruinaram alguns DBs antigos. O ataque não foi realmente um problema, mas queríamos ver qual código eles estavam executando e, assim, poder ler o T-LOG foi incrivelmente conveniente.

    
por 28.09.2010 / 14:00
0

We do have backup, im done with that already.Is there anyway can we work with database log to rollback recent deletion. – Simhadri

Talvez seja necessário explorar estratégias de repetição de log de transações .

    
por 24.09.2010 / 23:09
0

Outro método útil para recuperar dados de tabelas excluídas no SQL Server é usar a função fn_dblog ().

use mydatabase
go
SELECT 
 [Current LSN],    
 [Transaction ID],
     Operation,
     Context,
     AllocUnitName

FROM 
    fn_dblog(NULL, NULL) 
WHERE 
    Operation = 'LOP_DELETE_ROWS'

no entanto, o método de recuperar dados usando a função fn_dblog () é muito longo, mas pode ser útil para visualizar os registros excluídos de uma tabela.

    
por 18.03.2016 / 06:00