Tôi cập nhật một hàng của bảng, sử dụng WITH (ROWLOCK), nhưng bằng cách thực thi "sp_lock", tôi có thể thấy toàn bộ bảng là bị khóa. Vì vậy, trước khi giao dịch được thực hiện, các giao dịch khác không thể cập nhật các hàng khác của bảng. tại sao "WITH (ROWLOCK)" không có hiệu lực?tại sao toàn bộ bảng bị khóa trong khi "with (rowlock)" được sử dụng trong câu lệnh cập nhật
Tôi đang sử dụng các truy vấn dưới đây với cột chèo:
DELETE FROM DefDatabaseSession WITH (ROWLOCK) WHERE ProcessName='test';
trong cùng một thời gian từ bất kỳ giao dịch khác đang chạy các hoạt động xóa tương tự cho hàng sự khác biệt trong cùng một bảng Tôi nhận được ngoại lệ
[ Trình điều khiển JDBC SQLServer] [SQLServer] Thời gian yêu cầu khóa vượt quá thời gian .; ngoại lệ lồng nhau là java.sql.SQLException: [newscale] [SQLServer JDBC Driver] [SQLServer] Thời gian yêu cầu khóa vượt quá thời gian: com.newscale.bfw.udkernel.kernel.UdKernelException: udconfig.defdbsession.delete; SQLException chưa được phân loại cho SQL [DELETE FROM DefDatabaseSession WHERE ProcessName =?]; Trạng thái SQL [HY000]; mã lỗi [1222]; [newscale] [SQLServer JDBC Driver] [SQLServer] Thời gian yêu cầu khóa vượt quá thời gian .; ngoại lệ lồng nhau là java.sql.SQLException: [newscale] [SQLServer JDBC Driver] [SQLServer] Thời gian yêu cầu khóa vượt quá thời gian.
'EXPLAIN' không tồn tại trên SQL Server. Sử dụng nút "bao gồm kế hoạch thực hiện thực tế" để có kế hoạch. – Alejandro
tôi có chỉ mục cho cột ProcessName. – vani
nhưng tôi cần khóa hàng chỉ .. bởi vì có những hàng khác xóa sẽ xảy ra cùng một lúc bởi một số chủ đề khác .. vì vậy tôi cần phải loack duy nhất của tôi không phải là tất cả .. tôi không thể sử dụng bảng khóa – vani