Triệu chứng
Giả sử bạn có câu lệnh UPDATE tham chiếu đến hàm phân vùng không tồn tại bằng cách sử dụng từ khóa $PARTITION trong Microsoft SQL Server 2014, 2016 hoặc 2017. Ví dụ:
Lưu ý
UPDATE TableName SET ColumnName='xyz' WHERE $PARTITION. NonExistingPartitionFunction(ColumnName) = 1
Trong trường hợp này, SQL Server không thực hiện cập nhật hoặc trả về thông báo lỗi cho biết đối tượng NonExistingPartitionFunction không tồn tại. Tuy nhiên, từ quan điểm người dùng, có vẻ như rằng các cập nhật tuyên bố được thực hiện thành công, nhưng thực sự nó thất bại.
Nguyên nhân
Khi bạn thực hiện một lô, SQL Server có thể thực hiện độ phân giải tên trì hoãn (DNR). Trong quá trình này, SQL Server không ngay lập tức tạo ra một lỗi khi gặp phải một đối tượng không tồn tại, và nó hy vọng rằng các đối tượng sẽ được tạo ra bởi các mô-đun hoặc lô trước khi thực hiện các báo cáo tham chiếu đến đối tượng đó. Đối với chức năng phân vùng, SQL Server không xử lý DNR một cách chính xác.
Xem thêm thông tin
Để biết thêm thông tin về DNR, hãy xem Phân giải Tên Bị Hoãn.
Giải pháp
Sự cố này đã được khắc phục trong các bản cập nhật tích lũy sau đây SQL Server:
Bản cập nhật tích lũy 8 cho SQL Server 2016 SP1
Bản cập nhật Tích lũy 4 cho SQL Server 2017
Bản cập nhật tích lũy 9 cho SQL Server 2014 SP2
Giới thiệu về các bản cập nhật tích lũy SQL Server:
Mỗi bản cập nhật tích lũy mới dành cho SQL Server sẽ chứa tất cả các bản cập nhật nóng và tất cả các bản sửa lỗi bảo mật được bao gồm trong bản cập nhật tích lũy trước đó. Xem các bản cập nhật tích lũy mới nhất dành cho doanh SQL Server:
Bản cập nhật tích lũy mới nhất cho SQL Server 2016
Bản cập nhật tích lũy mới nhất cho SQL Server 2017
Bản cập nhật tích lũy mới nhất cho SQL Server 2014
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.