Récupérer les données SQL d’une table supprimée sans sauvegarde

Si vous avez accidentellement exécuté une instruction DROP et que vous disposez d’une sauvegarde complète, étant donné qu’aucun changement n’est survenu après que la table a été supprimée, vous pouvez tout simplement récupérer les données en écrasant la base de données originale avec la sauvegarde. Toutefois, si ce n’est pas le cas, soit parce que les objets de base de données et les données ont été modifiés après que l’instruction SQL DROP a été exécutée, soit parce que vous n’avez pas une sauvegarde de la base de données valide, il existe encore un moyen de récupérer toutes vos données perdues.

Automatiquement, chaque opération DROP est consignée dans le journal des transactions de SQL Server. Cela signifie que le journal des transactions enregistre les informations requises pour restaurer la transaction et, étant donné que la base de données est en mode de récupération complète, cela permet une récupération à un instant précis d’une opération DROP.

Étant donné que l’opération DROP est consignée dans le journal des transactions, elle peut être restaurée si elle est encapsulée dans une transaction explicite et active. Par exemple, la requête SQL suivante :

DROP TABLE Customer

SELECT *
FROM Customer

retournera le message d’erreur Msg 208, Niveau 16, État 1, parce que la table Customer a été supprimée.

Toutefois, le code SQL suivant :

BEGIN TRAN 
DROP TABLE Customer

ROLLBACK 
SELECT *
FROM Customer

retournera toutes les lignes dans la table Customer parce que l’opération DROP sera annulée.

Toutefois, si la transaction contenant l’opération DROP n’est plus active, après qu’elle ait été validée, la table supprimée ne peut pas être restaurée, et ainsi les données qu’elle stockait, sont également perdues. Est-ce que cela signifie que vous ne pouvez pas récupérer les données perdues à cause d’une opération DROP si aucune sauvegarde complète de bases de données n’est disponible?

Heureusement, non. C’est là qu’ApexSQL Recover entre en jeu.

ApexSQL Recover est un outil de récupération de bases de données SQL Server qui récupère des données supprimées, tronquées, corrompues ou endommagées. Il récupère les objets et les données perdues suite à des opérations de suppression et restaure aussi bien les BLOBs sous forme de fichiers, supprimés ou en ligne, ce qui est idéal pour les recouvrements de SharePoint.

Pour récupérer les données perdues sans sauvegardes en raison d’un DROP :

  1. Démarrez ApexSQL Recover
  2. Sélectionnez l’option Recover lost data due to a DROP TABLE operation
  3. A l’étape Select the database to recover
    • Spécifiez dans la zone de liste déroulante Server, l’instance SQL où la base de données dont vous souhaitez récupérer les données, se situe
    • Spécifiez la méthode d’authentification pour cette instance SQL (et les informations d’authentification valides si vous avez choisi l’authentification SQL Server)
    • Spécifiez dans la zone de liste déroulante Database, le nom de la base de données qui contient les tables supprimées
    • Et cliquez sur Next
  4. À l’étape Are additional data sources available?, sélectionnez l’option No additional transaction logs are available

  5. À l’étape Select a recovery action, sélectionnez Save the recovery script to a file et spécifiez le chemin d’accès où le script T-SQL qui insérera toutes les données perdues, sera enregistré

  6. Cliquez sur Recover

Et ainsi, vous obtiendrez vos données perdues sans disposer de la moindre sauvegarde de base de données SQL Server.

Article traduit par Philippe Geiger
Consultant certifié MCSE Data Platform et Business Intelligence et formateur certifié MCT.
Blog: http://blog.pgeiger.net
Twitter: @pgeiger

September 12, 2014