J'ai un applicaton dotnet qui exécute un ensemble d'insertion, mise à jour, supprimer des déclarations de manière transactionalySql effectue-t-il une restauration implicite si mon délai de restauration est dépassé?
Le code est comme ce
try
{
mytrans = mycon.begintransaction();
//execute sql statements
mytrans.commit();
}
catch(Exception)
{
mytrans.rollback();
}
Le problème est que nous avons été confrontés parfois des exceptions de délai d'attente dans rollback et je trouvé que la taille de la base de données (fichier mdf) a augmenté !!! Cela signifie donc que Sql ne fera pas de rollback implicite? Si oui, comment puis-je récupérer de cette erreur et aller à l'état d'origine ???
Cela signifie donc que la transaction qui n'est pas validée sera implicitement rollback, n'est-ce pas? if so Quel est le but de la méthode de restauration –
Oui, une transaction qui n'est pas validée est implicitement annulée lorsque la connexion à la base de données est fermée (éventuellement par un dépassement de délai). Le but de la méthode de restauration est de donner le contrôle à votre programme, car il peut y avoir des situations où une annulation est causée non pas par des problèmes techniques mais par la logique du programme: le programme lance une transaction, fait des choses, puis décide de revenir la transaction et faire quelque chose d'autre à la place en utilisant le même DB connectionc. –
Ok mais ma logique dit d'abord que je déplace les tables actuelles vers les tables hisoriques et que je fais un traitement lors de ce déplacement. J'ai été confronté à une exception de violation de clé primaire. table historique spécifique !!! cela signifie que le sql n'a pas réussi à revenir en arrière (je pense) –