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:

La transaction distribuée est terminée. Inscrivez cette session, soit dans une nouvelle transaction, soit dans une transaction NULL.
Que dois-je fais d'après vous pour corriger ce problème ?

Merci d'avance,
Zoax