Bonjour,

j'ai fait une SP pour mettre à jour des champs d'une table. L'application montant en charge, j'ai parfois cette sp qui est exécutée à 1 seconde d'intervalle à partir d'un autre PC mais sous le même login SQL.

j'ai le message suivant
Error : System.Exception: System.Data.SqlClient.SqlException (0x80131904): La transaction d'isolement d'instantané a été abandonnée en raison d'un conflit de mise à jour. Vous ne pouvez pas utiliser l'isolement d'instantané pour accéder à la table 'dbo.Journee' directement ou indirectement dans la base de données '' afin de mettre à jour, de supprimer ou d'insérer la ligne modifiée ou supprimée par une autre transaction.
je suppose que c'est parce que la première est en cours de mise à jour et qu'il ne veut pas laisser la seconde s'exécuter pour ne pas avoir de mauvais chiffre.

existe-t-il un moyen de dire à SQL d'attendre que la première est finie avant de faire la seconde plutôt que planter ? comme un FIFO. ou alors une autre approche.
ma SP met à jour des infos grâce à une requête imbriquées. Peut être que c'est préférable de faire la requête de comptage , puis l'update ?

Merci
morceau de contenu de la SP.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
update Journee set UVGlobalJournee = ( SELECT
													CASE WHEN max(E.UVGlobale) IS NULL THEN 0 
													ELSE max(E.UVGlobale) 
													END 
                                               FROM Examen E inner join 
												    IT_Journee_Examen IT on E.IdExamen = IT.IDEXAMEN 
                                               WHERE Journee.IdJournee = IT.IDJOURNEE
											  ) 
        WHERE Test = '1'  and Journee.IdPlanning = @IdPlanning