Bonjour

J'hérite de code SQL legacy capricieux et je suis face à un problème que je parviens pas à comprendre. Je sollicite donc vos lumières. J'ai une procédure stockée appelée depuis une application cliente de cette forme :

Maps1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Try
 
EXEC maps2  -- dans  cette ps en plein milieu du code , sans try catch, il y a un begin tran + commit tran et aucun rollback.
 
Catch
IF XACT_STATE() <> 0   ROLLBACK TRANSACTION  
--code pour tracer
Mon problème est le suivant : de temps en temps, mon catch capture les logs suivantes :
Echec du traitement : un Rollback a été effectué.
Echec du traitement. Erreur n° 3930, La transaction actuelle ne peut pas être validée et ne prend pas en charge les opérations qui écrivent dans le fichier journal. Restaurez la transaction.

En résulte que l'application ne peut plus appeler uniquement la procedure "Maps1" qui tombe toujours en erreur 3930. Le rollback ayant été déclenché, pourquoi les ressources ne sont pas libérées ? Je n'ai pas non plus la cause de l'erreur de maps2.
Pour résoudre le problème je ferme l'application cliente.

Merci d'avance.