Come recuperare dati in caso di operazioni di DELETE e UPDATE accidentali

di Uno dei peggiori incubi di un DBA è il perdere dati a causa di un errore da egli commesso. A volte capita eseguire erroneamente comandi di UPDATE e DELETE dimenticandosi della essenziale clausola WHERE. In quel caso, potenzialmente, vengono toccati milioni di record e, di conseguenza, compromessi i dati ad essi relativi.

Quali opzioni abbiamo con SQL Server? Potremmo pensare al ripristino di un backup effettuato prima del danno.

Soluzioni comuni possono essere:

  1. Ripristinare il backup e sovrascrivere il database online
  2. Altrimenti
    • Ripristinare il backup nello stesso server ma su di un nuovo database
    • Determinare le righe coinvolte nel database ripristinato
    • Aggiornare i record sul database originario usando il database ripristinato

Sfortunatamente queste soluzioni molto spesso non sono applicabili. Di solito lo scenario è molto più complesso. Qualcosa come:

  • Errori non notati subito (è passato troppo tempo per permettersi un ripristino)
  • Si sono verificati cambiamenti tra il momento della creazione del backup e l’esecuzione del comando
  • Nuovi dati
  • Indisponibilità di un utile backup


Ci sono altre possibilità?

Una delle opzioni per carpire le informazioni di cui abbiamo bisogno è utilizzare la lettura direttamente dal log delle transazioni online o scollegato e anche dai suoi backup.
ApexSQL Log è un tool di recupero in grado di leggere i dati dal log delle transazioni e di recuperare i dati facendo l’annullamento delle operazioni accidentali, al fine di portare i dati al loro stato originario.

Ecco come procedere per ripristinare dati persi a causa di operazioni di UPDATE e DELETE accidentali:

  1. Eseguire ApexSQL Log
  2. Connettersi al database
  3. In Select SQL logs to analyze, aggiungere i backup del log delle transazioni e gli eventuali file di log scollegati a cui si vuole accedere. Da notare che è necessario avere la catena complete per fare audit con successo. Aggiungere anche un backup può aiutare sia le performance che la qualità dell’audit sui dati.

  4. Utilizzare l’opzione Filter setup per migliorare la ricerca con l’intervallo di date, i tipi di operazione, i nomi di tabella, l’eventuale utente e con altri filtri

  5. Premere Open

    Le transazioni verranno mostrate nella griglia principale. È possibile utilizzare il filtro nel pannello di sinistra per eliminare le transazioni non necessarie.

  6. Per eseguire un recupero dei dati, selezionare le transazioni di cui fare rollback e premere Create undo script nel tab Actions

  7. Per eseguire lo script dall’editor, premere Execute oppure F5. Tutti i dati persi verranno recuperati nel database di destinazione.
  8. Nel caso in cui accidentalmente comandi di DELETE/UPDATE vengano eseguiti senza opportuni criteri, è possibile recuperare i dati con ApexSQL Log.

    Traduttore: Alessandro Alpi

    October 1, 2014