Nó không đủ để có một giao dịch có thể tuần tự hóa, bạn cần gợi ý về cách khóa để điều này hoạt động.
Mức cách ly có thể nối tiếp hóa thường sẽ vẫn có được loại khóa "yếu nhất" mà nó có thể đảm bảo đáp ứng các điều kiện có thể nối tiếp hóa (đọc lặp lại, không có hàng ảo, v.v.)
Vì vậy, bạn đang lấy một khóa dùng chung trên bảng của mình mà sau này bạn (trong giao dịch có thể tuần tự hóa của bạn) đang cố gắng nâng cấp lên an khóa cập nhật. Nâng cấp sẽ không thành công nếu một luồng khác đang giữ khóa chia sẻ (nó sẽ hoạt động nếu không có phần thân nào khác đang giữ khóa chia sẻ).
Bạn có thể muốn thay đổi nó thành như sau:
SELECT * FROM SessionTest with (updlock) WHERE SessionId = @SessionId
Điều đó sẽ đảm bảo khóa cập nhật được thực hiện khi thực hiện CHỌN (vì vậy bạn sẽ không cần phải nâng cấp khóa).