Bonjour,
j'ai développé une WebMethod qui utilise une transaction:
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 using (TransactionScope scope = new TransactionScope()) { SqlConnection connection = null; SqlCommand command = null; [..] // Traitement try { // Appel d'une procédure stockée utilisant une transaction command.ExecuteNonQuery(); } catch (Exception ex) { log.Error(ex.Message); throw new Exception("Erreur de sauvegarde dans la base de données.", ex); } trs.Complete(); [..] // Traitement }
Comme vous le voyez cette WebMethod fait appel à une procédure stockée qui utilise aussi une transaction.
Cette procédure stockée développée dans une base de données sous SQL Server 2005 est définie ci-dessous:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE PROCEDURE [dbo].[MyProcedure] ( -- Liste des paramètres ) AS SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRANSACTION MyTransaction -- Traitement COMMIT TRANSACTION MyTransaction
Il arrive que l'exception avec le message suivant soit lancée par la base de données:
Que dois-je fais d'après vous pour corriger ce problème ?La transaction distribuée est terminée. Inscrivez cette session, soit dans une nouvelle transaction, soit dans une transaction NULL.
Merci d'avance,
Zoax
Partager