Triệu chứng
Khi bạn thực hiện các thao tác DDL, chẳng hạn như tạo chỉ mục hoặc cắt cụt bảng trong SQL Server 2016, các thao tác này có thể bị chặn nếu có một giao dịch DDL khác đang chạy trên cùng một cơ sở dữ liệu.
Giải pháp
Sự cố này đã được khắc phục lần đầu tiên trong bản cập nhật tích lũy tiếp theo của SQL Server:
Đề xuất: Cài đặt bản cập nhật tích lũy mới nhất cho SQL Server
Mỗi bản cập nhật tích lũy mới dành cho SQL Server chứa tất cả các bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản cập nhật tích lũy trước đó. Chúng tôi khuyên bạn nên tải xuống và cài đặt các bản cập nhật tích lũy mới nhất cho SQL Server:
Xem thêm thông tin
Khi DDL tạo hoặc xóa một bảng hay chỉ mục, DDL cần chèn hoặc xóa id tập hàng của bảng hay chỉ mục khỏi sysrowsets mà DDL cần giữ khóa mức X hàng trên mục nhập. Khi việc này được thực hiện bên trong một giao dịch, khóa X sẽ được giữ trong suốt thời gian giao dịch.
Khi Tuple Mover phát hiện bộ đệm xóa có thể xóa được, nó cần lặp lại sysrowsets để khám phá các bảng hoặc chỉ mục hiện có. Để đọc từng hàng từ sysrowsets, anh ta cần giữ một khóa S cấp hàng trên mục nhập hiện đang đọc. Quy trình khám phá sẽ dừng lại khi Bộ khởi động Bộ tìm thấy tập hàng đầu tiên mà Bộ này có thể thực hiện thao tác. Tại thời điểm này, Bộ Mover sẽ thực hiện công việc xóa bộ đệm nhưng để đảm bảo rằng bộ hàng được phát hiện vẫn hợp lệ, nó sẽ giữ khóa SCH-S trên tất cả các bộ hàng được đánh giá trong quá trình khám phá cho đến khi hoàn tất công việc.
Sysrowsets được sắp xếp theo id bộ hàng, do đó có thể xảy ra trường hợp Trình khởi động Bộ đã quét nhiều bộ hàng hiện có mà trên đó nó không có hành động nào để thực hiện nhưng vẫn giữ khóa SCH-S và nó đến một mục trong sysrowsets mà nó không thể có được khóa S cấp hàng, vì nó hiện đang bị thay đổi bởi một giao dịch chạy lâu giữ một khóa X trên hàng đó. Tại thời điểm này các DDL liên quan đến thay đổi id tập hàng bị chặn đằng sau các khóa SCH-S của Tuple Mover.
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.