Triệu chứng
Giả sử rằng bạn có một truy vấn thực hiện một số thao tác chuỗi chẳng hạn như ghép nối, trên các cột CHAR hoặc VARCHAR trong Microsoft SQL Server 2014, 2016 và 2017. Hãy cân nhắc các trường hợp sau:
- Bạn ghép nối các cột với các kiểu đối chiếu khác nhau được gán cho chúng.
- Những đối chiếu này không tương thích với nhau. Ví dụ: bạn tìm cách ghép nối một cột được đối chiếu dưới dạng Latin1_General_CI_AI với Latin1_General_BIN.
- Kết quả cuối cùng của ghép nối được gán cho một đối chiếu cụ thể (bao gồm "database_default") như một vấn đề của việc giải quyết xung đột đối chiếu.
Trong trường hợp này, SQL Server thể trả về một giả định bán lẻ cho biết "So sánh không hợp lệ do KHÔNG ĐỐI CHIẾU" và bạn có thể nhận được một số thông báo lỗi tương tự như sau:
Lưu ý
Địa điểm: typinfo.cpp:LineNumber
Biểu thức: false
SPID: SPID
ID Quy trình: ProcessID
Mô tả: So sánh không hợp lệ do KHÔNG ĐỐI CHIẾU.Msg 3624, Cấp 20, Tiểu bang 1, Số Dòng
Không kiểm tra hiển thị được yêu cầu hệ thống. Kiểm tra nhật ký SQL Server nhật ký lỗi để biết chi tiết. Thông thường, lỗi xác nhận là do lỗi phần mềm hoặc hỏng dữ liệu. Để kiểm tra lỗi cơ sở dữ liệu, hãy cân nhắc việc chạy DBCC CHECKDB. Nếu bạn đồng ý gửi bãi cho Microsoft trong quá trình thiết lập, bãi chứa mini sẽ được gửi đến Microsoft. Bản cập nhật có thể có sẵn từ Microsoft trong Gói Dịch vụ mới nhất hoặc trong Bản cập nhật nóng từ Bộ phận Hỗ trợ Kỹ thuật.Msg 596, Cấp 21, Bang 1, Số Dòng
Không thể tiếp tục thực hiện vì phiên ở trạng thái giết.Msg 0, Mức 20, Tiểu bang 0, Số Dòng
Đã xảy ra lỗi nghiêm trọng trên lệnh hiện tại. Kết quả, nếu có, nên được loại bỏ.
Nguyên nhân
Trong giai đoạn tối ưu hóa truy vấn, SQL Server cố gắng tính toán các tính toán trung gian trên các kết quả trung gian của các giai đoạn khác nhau của truy vấn, ví dụ: ghép nối. Bởi vì giải quyết xung đột đối chiếu diễn ra ở cuối cùng, tối ưu hóa truy vấn có thể không biết về nó và cố gắng thực hiện tính toán của cardinality ghép nối trên một đầu vào với đối chiếu xung độ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 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.