Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de transactions imbriquées : URGENT

1 réponse
Avatar
TAGG INFO NEWS
Bonjour, j'ai un gros problèmes avec mes transactions imbriquées.
J'ai un procédure stockée principale PROC1 qui appelle une procédure stockée
PROC2 qui elle même appelle une
procédure stockée PROC3.
Chacunes des ces procédures stockées ouvre une transaction et la valide ou
l'annule suivant le cas.
Lorsque je passe dans le rollback de PROC3, j'ai une erreur SQL me disant
qui reste encore 2 transactions d'ouvertes
Comment peut-on palier à ce problème.
Merci d'avance
Steph

1 réponse

Avatar
Med Bouchenafa[MVP]
L'imbrication des transactions est quelque chose d'assez subtile dans
SQL/Server.
Bien lire l'Aide En Ligne avant de se lancer
Il est facile d'imbriquer involontairement des transactions.
J'ai vu beaucoup de personnes mettre systématiquement des BEGIN TRAN Tn
/ROLLBACK TRAN Tn ou COMMIT TRAN Tn dans les procédures stockées.
Le fait de nommer les transactions ne change rien. On ne peut que rollbacker
la transaction la plus externe.

L'exemple suivant ne fonctionnera pas.
BEGIN TRAN T0

BEGIN TRAN T1
ROLLBACK TRAN T1
ROLLBACK TRAN T0
On ne peut pas rollbacker T1. mais uniquement T0 comme dans l'exemple
suivant

BEGIN TRAN T0

BEGIN TRAN T1
ROLLBACK TRAN T0
ROLLBACK TRAN T0

Par contre, il vaut mieux utiliser les points de reprise par SAVE TRAN
BEGIN TRAN T0

SAVE TRAN T1
ROLLBACK TRAN T1
ROLLBACK TRAN T0


--
Salutations
Med Bouchenafa
TETRASET
75015 Paris



"TAGG INFO NEWS" wrote in message
news:bg62v7$am1$
Bonjour, j'ai un gros problèmes avec mes transactions imbriquées.
J'ai un procédure stockée principale PROC1 qui appelle une procédure


stockée
PROC2 qui elle même appelle une
procédure stockée PROC3.
Chacunes des ces procédures stockées ouvre une transaction et la valide ou
l'annule suivant le cas.
Lorsque je passe dans le rollback de PROC3, j'ai une erreur SQL me disant
qui reste encore 2 transactions d'ouvertes
Comment peut-on palier à ce problème.
Merci d'avance
Steph