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:
- Ripristinare il backup e sovrascrivere il database online
- 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:
- Eseguire ApexSQL Log
- Connettersi al database
- 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.
- 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
- Premere Open
Le transazioni verranno mostrate nella griglia principale. È possibile utilizzare il filtro nel pannello di sinistra per eliminare le transazioni non necessarie.
- Per eseguire un recupero dei dati, selezionare le transazioni di cui fare rollback e premere Create undo script nel tab Actions
- Per eseguire lo script dall’editor, premere Execute oppure F5. Tutti i dati persi verranno recuperati nel database di destinazione.
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