Question:
Normalement, vous pouvez annuler une commande sql avec restauration.Comment faire pour annuler une transaction SSMS implicite (déclaration avec aller à la fin)?
BEGIN TRY
BEGIN TRANSACTION
/* run all your SQL statements */
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
Ma question maintenant:
Si 'un' a fait ce
UPDATE TABLE_X SET FIELD_X = 'bla'
GO
dans SSMS (avis en déplacement à la fin) et a oublié de préciser la clause WHERE, est -il possible (et comment) d'annuler la transaction implicite que SSMS a exécutée dans cette commande (les instructions avec go à la fin sont implicitement exécutées dans une transaction)?
Note:
Je ne le faisais pas, mais un de mes collègues a fait il y a quelques jours (sans aller).
J'ai défait les dégâts qu'il a subis (heureusement j'ai fait une sauvegarde 0,5 heure avant de faire ça), mais pour le futur, ça serait bien de le savoir, parce que ça m'est arrivé une fois aussi.
Oh, un collègue, at-il été?:) – podiluska
@podiluska: xD C'était vraiment! Je sais à quel point les mises à jour sont dangereuses, car il y a un an, la même chose m'arrivait avec la table contenant les traductions (depuis que je sais, le problème sous-jacent est ce processus de réflexion. ..);) –
Vous pouvez toujours personnaliser le nouveau modèle de requête SSMS par défaut pour inclure 'begin tran; rollback tran' – podiluska