2010-11-22 7 views
2

C'est un environnement de test, j'avais besoin de certaines données pour tester une requête de mise à jour, mais j'ai mis accidentellement à jour une colonne dans toutes les lignes pour avoir des données erronées. Dois-je utiliser une sauvegarde pour restaurer les données vers l'instance précédente ou y a-t-il un secret avec le journal des transactions dont je peux profiter?Comment annuler une instruction de mise à jour apportée à une base de données

Merci d'avance.

+0

Devrait utiliser des transactions comme dans BEGIN TRAN T1 ... COMMIT TRAN T1 OU Rollback..etc. – JonH

Répondre

5

Il existe un journal des transactions non secrètes appelé journal des transactions que vous pouvez récupérer à un moment donné. Here's how... Ce petit fichier ennuyeux avec l'extension ldf est le journal des transactions, par opposition au fichier .mdf qui est vos données db normales.

Sauf si vous avez tronqué le journal des transactions (ldf) ou si vous l'avez copié, vous devriez être capable de faire exactement le type de restauration (annulation) que vous recherchez.

-2

homme ... Je suis désolé, mais ça me fait rire: D la façon dont vous formulez la question ...

Pour autant que je sache, vous ne pouvez pas annuler les données mises à jour :(

espoir que je me trompe

Bonne chance

+2

-1 Oui, c'était une question mignonne et ce n'est pas une réponse mignonne. C'est incorrect et aurait dû être un commentaire au mieux. Bienvenue à SO Rami, mais lisez la FAQ. THX. –

+0

ops, je suis désolé. –

+0

strictement à des fins éducatives, ce qui est si risible à propos de la question? – Haoest

1

Non, sauf si vous enveloppé votre sql dans un bloc de transaction -... begin transaction, rollback, commettras que l'une des choses dangereuses sur le serveur SQL avec Oracle, vous devez livrer physiquement chaque transaction qui est beaucoup plus sûr imho

+0

c'est trop tard monsieur. – Haoest

+0

Vous pourriez trouver cela utile dans le futur. Il désactive la validation automatique. Notez que vous devrez gérer vos propres transactions http://www.dataprix.com/fr/blogs/il-masacratore/sql08-how-disable-autocommit-sql-server-management-studio – hoakey

2

Si votre base de données était en mode de récupération complète, vous pouvez essayer de lire le journal des transactions à l'aide d'un outil tiers tel que this one ou vous pouvez essayer de le faire vous-même avec la commande DBCC LOG. Si db est en récupération complète, beaucoup de données sont stockées dans le journal des transactions mais elles ne sont pas facilement lisibles car MS n'a jamais poli la documentation officielle pour cela et parce que son but n'est pas de récupérer mais de s'assurer que la transaction est validée correctement. Cependant, il existe des solutions de contournement à la lecture comme l'utilisation de l'outil ci-dessus (outil payant malheureusement mais a un essai) ou le décodage des résultats de DBCC LOG vous-même.

Questions connexes