Come recuperare i dati di SQL Server da un’operazione accidentale di tipo DELETE, TRUNCATE e DROP

Hai eseguito inavvertitamente (o ti sei trovato in altre situazioni che hanno comportato una perdita di dati) un’istruzione DELETE, TRUNCATE o DROP su un database ed hai perduto delle righe valide.

Come si possono riottenere i dati?!?!

Scenari:

a) Facile:

  • Nessun cambio è avvenuto dopo l’istruzione DELETE, TRUNCATE o DROP è tu hai un backup completo

>> Ripristina il backup completo precedente

b) Difficile:

  • Hai un backup completo, ma …
  • Alcune modifiche sono state fatte dopo l’esecuzione del DELETE, TRUNCATE o DROP, oppure
  • Non puoi portare il database offline

>> Usa il backup completo per esportare i dati ed importarli nel database di produzione

c) Impossibile?

  • Non hai un backup completo che contenga i dati persi
  • Non puoi portare il database offline
  • Alcune transazioni sono state fatte sul database dopo che i dati sono stati persi

>> Usa ApexSQL Recover

Come ApexSQL Recover ci può aiutare

Il transaction log tiene le informazioni sulle transazioni che sono state fatte sul tuo database; ApexSQL Recover è uno strumento che può scavare nel transaction log e recuperare i dati cancellati, eliminati o persi.

  1. Lancia ApexSQL Recover
  2. Seleziona un’opzione di recupero basata sull’istruzione eseguita, per esempio Recupera I dati persi per un’operazione di DELETE.
    Se non sai quale istruzione ha causato la perdita di dati, usa tutte le opzioni, una dietro l’altra
    Se la perdita di dati è stata causata da una o più differenti istruzioni, usa le opzioni adeguate, una dietro l’altra


  3. Se hai il backup del transaction log o i log offline delle transazioni creati nel momento in cui i dati si sono persi, clicca Add transaction logs per aggiungerli. Nel caso in cui ci siano state molte transazioni sul database dopo che i dati sono stati persi, le informazioni sulla perdita di dati potrebbero non esistere più nel transaction log. Aggiungendo queste ulteriori fonti, fornirai le informazioni necessarie sulle transazioni che hanno rimosso i dati dal tuo database. Usa l’opzione Help me decide option se non sei certo di quali fonti dati addizionali possono essere usate.

    Questa possibilità è disponibile soltanto per le opzioni DELETE e DROP TABLE options.

    Se non sono disponibili ulteriori fonti dati, seleziona No additional transaction logs are available e vai al punto #7



  1. Aggiungi una sequenza di backup dei transaction logs che termina con il transaction log attivo e/o i transaction logs offline usando il bottone Add



  2. Seleziona il momento in cui i dati sono stati persi. Questo restringerà il risultato soltanto ai record che vuoi recuperare. Non sei interessato a reinserire i dati che hai cancellato deliberatamente

    Se non sei certo di quando è successo, seleziona Date and time are unknown

  3. Seleziona le tabelle dalle quali i dati sono stati perduti. Controlla la struttura del database per verificare se le tabelle da recuperare hanno qualche relazione. Accertati che tutte le tabelle che dipendono dalle tabelle ripristinate siano a loro volta selezionate, per evitare problemi con le dipendenze nel reinserimento dei dati.



  4. Seleziona Save recovery script to file per creare uno script T-SQL che inserirà tutti i record recuperati. Puoi anche rivedere e modificare lo script prima di eseguirlo



Dopo che lo script di annullamento è stato eseguito, i dati persi sono inseriti nella tabella.

Perciò ricorda che, anche se hai erroneamente cancellato dati da tabelle, troncato o eliminato una tabella, c’è una opportunità di recuperare i dati persi utilizzando ApexSQL Recover

July 25, 2017