KB4502400 - KHẮC PHỤC: SQL Server 2014, 2016 và 2017 không thực hiện các nhiệm vụ được yêu cầu ở hàng trước khi bạn sử dụng câu lệnh MERGE thực hiện nhiệm vụ của các biến cục bộ cho mỗi hàng

Áp dụng cho
SQL Server 2016 Service Pack 2 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 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)

Triệu chứng

Giả sử bạn sử dụng câu lệnh MERGE để tìm hiểu số hàng không khớp theo nguồn và lưu trữ trong một biến cục bộ như sau:

DECLARE
  @NotMatchedBySource INT = 0;

MERGE TargetTable USING SourceTable ON TargetTable.id = SourceTable.id
KHI KHÔNG KHỚP THEO NGUỒN THÌ
  UPDATE SET @NotMatchedBySource = @NotMatchedBySource + 1;

IN ;@NotMatchedBySource
GO

Trong trường hợp này, bạn có thể nhận thấy rằng giá trị của @NotMatchedBySource sau khi câu lệnh MERGE có thể không phản ánh số hàng thực tế không khớp với nguồn.

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

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 dành cho SQL Server

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:

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.