Bonjour tout le monde
Lorsque, sous sql server 2008 (pas R2) je fais:
J'ai le droit à un superbe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 BEGIN TRY BEGIN TRANSACTION q_ar_new_MajESale_fr_Articles EXEC [dbo].[q_MajESale_fr_Articles] @ForetagKod, @SprakKod; COMMIT TRANSACTION q_ar_new_MajESale_fr_Articles END TRY BEGIN CATCH ROLLBACK TRANSACTION q_ar_new_MajESale_fr_Articles --Blah blah des tests pour trouver l'erreur END CATCH
Je sais que les erreurs peuvent invalider une transaction en fonction du niveau de gravité, mais est ce qu'elles peuvent carrément la faire disparaître ?Msg*3903, Niveau*16, État*1, Ligne*216
La requête ROLLBACK TRANSACTION n'a pas de BEGIN TRANSACTION correspondante.
J'ai fait quelques tests avec des SELECT @@TRANCOUNT; et a priori c'est le cas, j'ai placé un select avant le exec, un après et un au début du catch, résultat : 1 avant le exec, 0 dans le catch (???!) et pas de message après le exec (normal)
Du coup je veux bien vérifier qu'il il y a une transaction en cours (IF @@TRANCOUNT > 0) mais qu'en est-il des données traitées dans la procédure seront-elles enregistrées ou non ?
Partager