Triệu chứng
Giả định rằng bạn đã có một bảng Microsoft SQL Server có một hoặc nhiều chỉ mục được xây dựng trên đó. Khi truy vấn của bạn đối với bảng, SQL Server có thể thực hiện các bộ đệm dữ liệu không nhất quán cho các cột CHAR và nhị phân. Hành vi không nhất quán để trở về dấu khoảng trống ở cuối cột dữ liệu CHAR và nhị phân tùy thuộc vào các điều kiện sau đây:
-
Các thiết đặt của ANSI_PADDING khi các cột được tạo trong bảng SQL Server.
-
Quyết định thực hiện việc quét bảng hoặc chỉ mục tìm kiếm trên các cột.
Nguyên nhân
Trong một số trường hợp, SQL Server có thể thực hiện tối ưu hóa cho phép bỏ qua nhiều thao tác để chuyển giao dữ liệu nhanh hơn. Sự cố xảy ra vì SQL Server không nhận ra rằng tối ưu hóa không thể áp dụng cho kịch bản trên đây.
Thông tin Bổ sung
Hành vi này của SQL Server không tuân thủ các hành vi được ghi lại trong bài viết sau đây: dùng dữ liệu Char và varchar.
Nếu ANSI_PADDING được bật khi cột NULL NULL được tạo, nó sẽ hoạt động giống như cột char không NULL: các giá trị là phù hợp với kích cỡ của cột. Nếu ANSI_PADDING được tắt khi cột NULL NULL được tạo, nó sẽ hoạt động như một cột varchar với ANSI_PADDING đặt ra: dấu cách trống bị cắt cụt.
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 cho SQL Server:
Bản Cập Nhật tích lũy 2 cho SQL Server 2017
Cập Nhật tích lũy 9 cho SQL Server 2016
Bản Cập Nhật tích lũy 6 cho SQL Server 2016 SP1
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:
Bản Cập Nhật tích lũy mới nhất cho SQL Server 2017
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm Microsoft được liệt kê trong phần "áp dụng cho"
Tham khảo
Tìm hiểu về thuật ngữmà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.