KB4502400 - FIX: SQL Server 2014, 2016, dan 2017 tidak melakukan penetapan pra-baris yang diminta saat Anda menggunakan pernyataan MERGE yang melakukan penetapan variabel lokal untuk setiap baris

Berlaku Untuk
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)

Gejala

Misalnya Anda menggunakan pernyataan MERGE untuk mencari tahu berapa banyak baris yang tidak cocok dengan sumber dan menyimpannya dalam variabel lokal sebagai berikut:

DECLARE
  @NotMatchedBySource INT = 0;

MERGE TargetTable USING SourceTable ON TargetTable.id = SourceTable.id
KETIKA TIDAK COCOK DENGAN SUMBER MAKA
  SET @NotMatchedBySource = @NotMatchedBySource PEMBARUAN + 1;

CETAK @NotMatchedBySource;
GO

Dalam situasi ini, Anda mungkin melihat bahwa nilai @NotMatchedBySource setelah pernyataan MERGE mungkin tidak mencerminkan jumlah baris aktual yang tidak cocok dengan sumber.

Status

Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".

Resolusi

Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut untuk SQL Server

Tentang pembaruan kumulatif untuk SQL Server:

Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:

Referensi

Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.