O devi tenere più lucchetti o meno.
La risposta più semplice è andare su NOLOCK (migliore prestazione) o TABLOCKX (coerenza senza dover pensare).
Se non puoi usare with (nolock) a causa dei requisiti di coerenza, puoi aggiungere with (tablockx) .Ciò significherà effettivamente che solo un thread alla volta può eseguire istruzioni simili:non ci sarà concorrenza.
L'alternativa è analizzare le tue esigenze in modo molto più dettagliato, cosa che non può essere fatta senza capire perché stai aggiornando la tabella, a cosa servono i dati, ecc.
Ad esempio, questa affermazione deve davvero essere inclusa nella transazione? Odora di pulizie:
DELETE FROM [dbo].[t_Log_2]
WHERE [idtm]<'2011-03-12 08:41:57';
Se lo togli dalla transazione e lo inserisci in un batch separato, potresti scoprire che i problemi scompaiono.