保持するロックを増やすか減らす必要があります。
最も簡単な答えは、NOLOCK
のどちらかにすることです (最高のパフォーマンス) または TABLOCKX
(考える必要のない一貫性)。
with (nolock)
が使えない場合 一貫性の要件により、 with (tablockx)
を追加できます .これは事実上、一度に 1 つのスレッドのみが like ステートメントを実行できることを意味します - 同時実行性はありません.
別の方法は、要件をより詳細に分析することです。これは、テーブルを更新する理由、データの目的などを理解することなく行うことはできません。
たとえば、このステートメントは本当にトランザクションに含まれている必要がありますか?ハウスキーピングの匂いがします:
DELETE FROM [dbo].[t_Log_2]
WHERE [idtm]<'2011-03-12 08:41:57';
トランザクションからそれを取り出して別のバッチに入れると、問題が解決することがあります。