KB4046745 - KHẮC PHỤC: Câu lệnh UPDATE không thành công khi bạn tham chiếu hàm phân vùng không tồn tại trong mệnh đề WHERE trong SQL Server 2014, 2016 hoặc 2017

Áp dụng cho
SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise Core SQL Server 2017 Enterprise SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

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.