Vous devez soit détenir plus de verrous, soit moins.
La réponse la plus simple est d'aller soit NOLOCK
(meilleures performances) ou TABLOCKX
(cohérence sans avoir à réfléchir).
Si vous ne pouvez pas utiliser with (nolock)
en raison des exigences de cohérence, vous pouvez ajouter with (tablockx)
.Cela signifiera effectivement qu'un seul thread peut exécuter des instructions similaires à la fois - il n'y aura pas de simultanéité.
L'alternative est d'analyser vos besoins de manière beaucoup plus détaillée, ce qui ne peut être fait sans comprendre pourquoi vous mettez à jour le tableau, à quoi servent les données, etc.
Par exemple, cette instruction doit-elle vraiment figurer dans la transaction ? Ça sent le ménage :
DELETE FROM [dbo].[t_Log_2]
WHERE [idtm]<'2011-03-12 08:41:57';
Si vous retirez cela de la transaction et que vous le mettez dans un lot séparé, vous constaterez peut-être que les problèmes disparaissent.