Или трябва да държите повече ключалки, или по-малко.
Най-лесният отговор е да изберете NOLOCK
(най-добра производителност) или TABLOCKX
(последователност без да се налага да мислите).
Ако не можете да използвате with (nolock)
поради изискванията за последователност, можете да добавите with (tablockx)
.Това на практика ще означава, че само една нишка може да изпълнява подобни изрази в даден момент - няма да има едновременност.
Алтернативата е да анализирате изискванията си много по-подробно, което не може да стане, без да разберете защо актуализирате таблицата, за какво са данните и т.н.
Например, това изявление наистина ли трябва да присъства в транзакцията? Мирише на домакинство:
DELETE FROM [dbo].[t_Log_2]
WHERE [idtm]<'2011-03-12 08:41:57';
Ако извадите това от транзакцията и го поставите в отделен пакет, може да откриете, че проблемите изчезват.