Ripristinare dati in sql server

Ripristinare dati in Sql Server 2019 da operazioni UPDATE e DELETE errati

Ripristinare dati in Sql Server dopo aver eseguito un operazione di UPDATE o DELETE è l’incubo peggiore di un amministratore di database SQL. Non è raro che qualcuno esegua in modo improprio o addirittura dimentichi una clausola WHERE durante l’esecuzione di query di cancellazione o aggiornamento dati, causando la compromissione di centinaia di migliaia di righe di dati compromessi.

Quindi, quali opzioni di recupero dati di SQL Server sono disponibili?

Ripristinare dati in Sql Server da backup

Se si dispone di un backup creato in precedenza che contiene i valori della tabella originale, è possibile ripristinare facilmente i dati. Le soluzioni più comuni sono:

  1. Ripristinare il backup del database e utilizzarlo al posto del database originale

Nel caso in cui si siano verificate altre modifiche dopo l’aggiornamento o non sia possibile consentire la modalità offline del database:

  1. Ripristinare un backup del database in un server di prova
  2. Nel caso in cui si siano verificate altre modifiche dopo l’aggiornamento o non sia possibile consentire la modalità offline del database:
  1. Ripristinare il backup sullo stesso server del database originale utilizzando un nome di database diverso
  2. Individuare le righe pertinenti nel database ripristinato
  3. Aggiornare le righe interrotte utilizzando le righe originali dal database ripristinato

Purtroppo, raramente è lo scenario di recupero così “pulito e pulito” per consentire una soluzione così semplice. Ma se sei fortunato puoi utilizzare questa soluzione

Più probabilmente:

  • Gli errori non sono stati rilevati abbastanza presto
  • Sono state apportate modifiche successive ai dati tra l’ultima creazione del backup del database e l’esecuzione della query che complica significativamente il ripristino
  • Afflusso di nuovi dati
  • I backup del database non sono stati eseguiti abbastanza regolarmente, o affatto

Tuttavia, se non si dispone di un backup completo del database, è comunque possibile eseguire il rollback degli upDATE utilizzando le informazioni sulle transazioni archiviate nel registro delle transazioni online del database

Il log delle transazioni mantiene le informazioni sulle transazioni effettuate nel database. Se non è stato ridotto o troncato, è possibile utilizzare ApexSQL Log o ApexSQL Recover per ripristinare dati in Sql Server 2019.

Ripristinare dati in Sql Server con ApexSQL Log

Sia ApexSQL Log che ApexSQL Recover sono strumenti che possono estrarre i file di registro delle transazioni del database ed eseguire il rollback degli UPDATE accidentali. Pertanto, anziché aggiornare tutti i dati nella tabella, è possibile eseguire il rollback dell’istruzione UPDATE e quindi aggiornare solo i dati che soddisfano determinati criteri.

In questo modo possiamo ripristinare dati in sql server che abbiamo cancellato per errore.

Procedura recupero dati mediante ApexSQL Log – Configurazione

Avviare lo strumento e connettersi al database

ripristinare dati in sql server - Accesso ApexSql Log
Ripristinare dati in sql server – Accesso ApexSql Log

Nel passaggio Selezione origini dati della procedura guidata aggiungere i backup del log delle transazioni e i log delle transazioni scollegati che si desidera leggere. Si noti che devono formare una catena completa per fornire un controllo corretto. L’aggiunta di un backup del database consente di migliorare le prestazioni e la qualità dei dati dell’audit trail

Ripristinare dati in sql server - Selezione Log
Ripristinare dati in sql server – Selezione Log

Nel passaggio successivo della procedura guidata, scegliere l’opzione Apri risultati nella griglia.

Ripristinare dati in sql server - Apertura dati in griglia
Ripristinare dati in sql server – Apertura dati in griglia

Utilizzare le opzioni di impostazione del filtro per restringere il set di risultati utilizzando il tempo, il tipo di operazione, il nome della tabella, l’utente e altre opzioni di filtro.

Ripristinare dati in sql server - Impostazione filtri
Ripristinare dati in sql server – Impostazione filtri

Nella scheda Operazioni, selezionare Operazione di aggiornamento e assicurarsi che tutte le altre operazioni DML e DDL siano deselezionate

Ripristinare dati in sql server - impostazione operazioni
Ripristinare dati in sql server – impostazione operazioni

Selezionare le tabelle in cui i dati sono stati aggiornati nel passaggio Opzioni di impostazione filtro, Filtro tabelle

Ripristinare dati in sql server - Filtro Tabelle
Ripristinare dati in sql server – Filtro Tabelle

Dopo aver impostato tutte le opzioni, fare clic su Fine

Procedura ripristino dati

Dopo aver impostato tutte le configurazioni necessarie le transazioni verranno elencate nella griglia principale dell’applicazione. È comunque possibile utilizzare il filtro nel riquadro sinistro per eliminare inoltre le transazioni non necessarie.

Ripristinare dati in sql server - Griglia transazioni
Ripristinare dati in sql server – Griglia transazioni

Per eseguire il recupero dei dati, archiviare le transazioni di cui si desidera eseguire il rollback e fare clic su Annulla nella scheda Azioni.

Per eseguire lo script dall’editor, fare clic sul pulsante Esegui o premere F5 e i dati persi verranno ripristinati nel database.

Ripristinare dati in sql server - Editor script
Ripristinare dati in sql server – Editor script

Conclusione

Abbiamo visto come ripristinare dati in Sql Server con ApexSql Log.

Ti consiglio di fare diversi test e prove prima di utilizzare il programma su un ambiente di produzione.

Sei hai dubbi scrivimi nei commenti.

Autore Bartolomeo

Consulente tecnico con la passione per il web e la tecnologia e tutto quello che le ronza intorno.
Nel tempo libero scrivo articoli per il mio blog su argomenti vari, in particolare su configurazione Windows, Linux e WordPress.

Condividi questo articolo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ho letto la policy privacy e accetto il trattamento dei miei dati personali in conformità al D.Lgs. 196/2003