Bạn cần giữ nhiều ổ khóa hơn hoặc ít hơn.
Câu trả lời dễ nhất là đi NOLOCK
(hiệu suất tốt nhất) hoặc TABLOCKX
(nhất quán mà không cần phải suy nghĩ).
Nếu bạn không thể sử dụng with (nolock)
vì yêu cầu nhất quán, bạn có thể thêm with (tablockx)
Điều này có nghĩa là chỉ một luồng có thể thực thi các câu lệnh giống như các câu lệnh tại một thời điểm - sẽ không có đồng thời.
Giải pháp thay thế là phân tích các yêu cầu của bạn chi tiết hơn, điều này không thể thực hiện được nếu không hiểu tại sao bạn cập nhật bảng, dữ liệu dùng để làm gì, v.v.
Ví dụ, câu lệnh này có thực sự cần thiết trong giao dịch không? Nó có mùi giống như dịch vụ dọn phòng:
DELETE FROM [dbo].[t_Log_2]
WHERE [idtm]<'2011-03-12 08:41:57';
Nếu bạn lấy nó ra khỏi giao dịch và đặt nó vào một lô riêng biệt, bạn có thể thấy vấn đề sẽ biến mất.