Comment récupérer les données d’un Server SQL suite à une suppression, un troncage ou un déplacement accidentel de données

Cet article vous concerne si vous avez exécuté par inadvertance sur une base de données une requête DELETE, TRUNCATE ou DROP et que vous avez perdus des enregistrements. Ce qui suit vous explique comment récupérer ces données.

Scénarios possibles:

a) Facile:

  • Si aucune modification n’a eu lieu depuis votre commande accidentelle DELETE, TRUNCATE ou DROP et que vous disposez d’une sauvegarde complète (backup FULL)

>> Il suffit de restaurer la dernière sauvegarde complète de votre base de données

b) Difficile:

Si vous disposez d’un backup FULL mais…

  • que certains changements se sont opérés sur la base de données après votre commande DELETE, TRUNCATE ou DROP
  • ou qu’il est impossible de mettre la base de données hors ligne

>> Il est nécessaire d’utiliser la sauvegarde complète de la base de données pour exporter les données pour ensuite les importer dans la base de données de production

c) Impossible?

  • Vous n’avez pas de backup FULL qui contient les données perdues
  • Vous ne pouvez pas récupérer les bases de données hors ligne
  • Certaines transactions ont eu lieu sur la base de données après que les données ont été perdues

>> Il est nécessaire d’utiliser ApexSQL Recover

Comment fonctionne le ApexSQL Recover?

Le journal des transactions (Transaction log) conserve les informations à propos des dernières transactions qui ont eu lieues sur votre base de données. ApexSQL Recover est un outil qui permet d’analyser la base de données du transaction log et de récupérer les données supprimées ou perdues.

  1. Démarrer l’outil de récupération ApexSQL Recover

  2. Sélectionner une option de récupération basée sur la commande (accidentelle) qui a été exécutée. Par exemple, l’option Data recovery from DELETE operation devrait être utilisée sur la récupération de données est à effectuer après avoir utilisé la commande DELETE.

    Si vous ne savez pas quelle commande a provoqué la perte de données, utilisez chaque option l’une après l’autre.

    Si la perte de données a été causée par deux ou plus commandes erronnées, utilisez les options adéquates l’une après l’autre.

  3. Si vous avez un backup du transaction log ou un transaction log séparé créé au moment de la perte de données, cliquez sur Add transaction logs (Ajouter des journaux de transactions) pour en ajouter

    Dans le cas de figure où plusieurs transactions ont eu lieu dans la base de données après la perte des données, l’information à propos de la perte de données peut ne plus exister dans le journal de transaction en ligne.

    Avec ces sources additionnelles, vous apporterez l’information nécessaire au système concernant les commandes qui ont supprimés les données dans votre base de données.
    Utilisez l’option Help me decide si vous n’êtes pas certains des sources de données qui peuvent être utilisées.

    Cette option est uniquement disponible pour les commandes suivantes : DELETE et DROP TABLE.

    Si par contre vous n’avez aucune source additionnelle à ajouter, sélectionnez No additional transaction logs are available et passez à l’étape 7.

  1. Etape 1: Ajoutez une série de sauvegarde de journaux des transactions en finissant par la version en ligne du journal des transactions et/ou du journal des transactions détaché à l’aide du bouton Add

  2. Etape 2: Sélectionnez le moment où les données ont été perdues. Cela va restreindre les résultats uniquement aux enregistrements que vous souhaitez récupérer. Il n’est pas nécessaire de récupérer des données que vous avez supprimé délibérément. Si vous n’êtes pas certains du moment, sélectionnez Date and time are unknown

  3. Etape 3: Sélectionnez la ou les tables pour lesquelles des données ont été perdues. Vérifiez bien au niveau de la structure de votre base de données que les tables que vous souhaitez récupérer n’ont pas de relations avec d’autres tables.

    Assurez-vous que toutes les tables qui dépendent des tables devant être récupérées ont bien été également sélectionnées. Cette étape est importante car elle permettra d’éviter des problèmes d’inconsistance lors de la réinsertion de données

  4. Etape 4: Sélectionnez Save recovery script to file pour créer un script de récupération (Redo Script) en T-SQL qui réinsérera les données récupérées. Vous pouvez vérifier et modifier le script avant de l’exécuter.

Après que le script ait été exécuté, les données perdues sont réinsérées dans la table.

Après que le script ait été exécuté, les données perdues sont réinsérées dans la table ApexSQL Recover

September 15, 2017