Triệu chứng

Hãy xem xét tình huống sau:

  • Bạn có một cơ sở dữ liệu có các tùy chọn ALLOW_SNAPSHOT_ISOLATION và READ_COMMITTED_SNAPSHOT được kích hoạt trong Microsoft SQL Server 2008 R2.

  • Bạn chạy một câu lệnh Select có chứa Tablock và UPDLOCK gợi ý đối với một bảng trong cơ sở dữ liệu.

  • Câu lệnh Select được bọc trong một Tran bắt đầurõ ràng nhưng cam kết không được thực thi.

  • Hai phần khác của cùng một truy vấn được bắt đầu với cùng một gợi ý truy vấn nằm trong giao dịch rõ ràng.

Trong trường hợp này, khi truy vấn đầu tiên cam kết, một trong các truy vấn khác sẽ được bế tắc.

Nguyên nhân

Sự cố xảy ra vì SQL Server không đúng báo cáo được bế tắc trong một trong những tình huống sau đây:

  • Khi ALLOW_SNAPSHOT_ISOLATION và READ_COMMITTED_SNAPSHOT được kích hoạt cho một cơ sở dữ liệu, nhiều truy vấn so với cùng giao dịch có thể được báo cáo là bị khóa không đúng cách khi một trong số đó đã hoàn thành.

  • Khi ALLOW_SNAPSHOT_ISOTION được bật và các gợi ý Tablock và UPDLOCK được sử dụng, câu lệnh Select thứ hai và thứ ba sẽ thực hiện IX khóa với mục đích chuyển đổi thành X. Hàm IX sẽ khóa deadlocking khi tìm cách chuyển đổi thành X được thực hiện.

  • Khi ALLOW_SNAPSHOT_ISOLATION bị vô hiệu hóa, các truy vấn thứ hai và thứ ba sẽ có được sáu khóa. Trong trường hợp này, khi sáu khóa được chuyển đổi thành X, nó chỉ là một kịch bản chặn, chứ không phải là một bế tắc.

Mỗi bản Cập Nhật tích lũy mới cho SQL Server chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản Cập Nhật tích lũy trước đó. Kiểm tra các bản Cập Nhật tích lũy mới nhất cho SQL Server:

Trạng thái

Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".

Bạn cần thêm trợ giúp?

Phát triển các kỹ năng của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Microsoft dùng nội bộ

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?

Cảm ơn phản hồi của bạn!

×