Question

Il manque soudain des lignes à notre base de données de test. Nous voulons qu'ils reviennent.

Existe-t-il un moyen de passer en revue tout ce qui est arrivé à la base de données aujourd'hui? Chaque instruction SQL? Je suppose que ce genre de choses est dans le journal des transactions, mais je ne sais pas comment l’afficher.

Existe-t-il un moyen d'annuler des opérations de suppression?

BTW: Oui, nous avons une copie de sauvegarde, mais nous préférerions également trouver la cause de la suppression ...

Était-ce utile?

La solution

Vous pouvez le faire avec certains des outils de Red Gate , mais cela coûte cher. Consultez le Récupération du journal SQL .

Sinon, je serais tenté de faire une restauration.

Autres conseils

[réponse tardive mais j'espère utile]

Il existe un moyen de récupérer les lignes supprimées à l'aide du journal des transactions, mais uniquement si vous utilisez des outils tiers et que seul votre base de données est en mode de récupération complète.

Dell (anciennement Quest) possède Toad for SQL Server et ApexSQL. a journal ApexSQL et ApexSQL Recover qui peut également lire le journal t-log et récupérer des données. Malheureusement, Log Rescue de Red Gate ne peut lire les journaux que sur SQL Server 2000.

Il existe également un moyen de lire t-log en utilisant la commande non documentée dbcc log. Voir plus de détails ici .

Etant donné que vous avez déjà des sauvegardes de base de données, vous pouvez les restaurer dans une base de données séparée, puis utiliser l'un des nombreux outils de comparaison de données existants sur le marché pour insérer les données manquantes dans la base de données de production. Bien sûr, cela ne peut récupérer que les données supprimées avant de créer une sauvegarde.

Vous avez besoin d'un outil tiers pour cela. L'outil doit pouvoir accéder aux journaux de transactions et afficher les entrées de journal afin de voir ce qui s'est passé. Je n'ai utilisé aucun de ces outils, mais j'essaierais pour commencer SQL Log Rescue de Red Gate. Essayez-le:

http://www.red-gate.com/products/SQL_Log_Rescue /index.htm

Je donnerais un essai à ChronicDB qui propose une version gratuite plutôt que de payer Red Gate

http://chronicdb.com/blogs/undelete_from_whoops

Vous pouvez annuler une transaction à l'aide de la commande Rollback dans SQL Server. Toutefois, vous devez savoir que la transaction peut être annulée si elle a été effectuée dans la transaction Begin .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top