KB4055758 - SỬA LỖI: Hành vi không nhất quán khi trả về giá trị trống ở cuối dữ liệu CHAR và BINARY trong SQL Server

Áp dụng cho
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) SQL Server 2016 Service Pack 1 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 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Triệu chứng

Giả sử 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 bạn truy vấn đối với bảng, SQL Server thể thực hiện đệm dữ liệu không nhất quán cho cột CHAR và BINARY. Hành vi không nhất quán khi trả về giá trị trống ở cuối cột dữ liệu CHAR và BINARY phụ thuộc vào các điều kiện sau đây:

  • Các thiết đặt của ANSI_PADDING khi cột được tạo trong SQL Server bảng.
  • Quyết định thực hiện quét bảng hoặc tìm kiếm chỉ mục trên các cột.

Nguyên nhân

Trong một số trường hợp nhất định, SQL Server thể thực hiện tối ưu hóa cho phép nó bỏ qua nhiều thao tác để phân phối dữ liệu nhanh hơn. Sự cố này xảy ra do SQL Server không nhận ra rằng không thể áp dụng tối ưu hóa cho trường hợp trên.

Xem thêm thông tin

Hành vi này SQL Server không phù hợp với hành vi được tài liệu trong bài viết sau đây: Sử dụng dữ liệu Char và Varchar.

Lưu ý

Nếu ANSI_PADDING bật khi tạo cột char NULL, thì cột đó sẽ hoạt động giống như cột char NOT NULL: các giá trị được đệm phải theo kích cỡ cột. Nếu ANSI_PADDING tắt khi một cột char NULL được tạo, nó sẽ hoạt động như một cột varchar với ANSI_PADDING đặt TẮT: các giá trị trống ở cuối 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 SQL Server:

Bản cập nhật Tích lũy 2 cho SQL Server 2017

Bản 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

Bản cập nhật tích lũy 8 cho SQL Server 2014 SP2

Bản cập nhật tích lũy 7 cho SQL Server 2014 SP1

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 2017

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 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.