KB4502400 – POPRAVKA: SQL Server 2014, 2016 i 2017 ne izvršavaju tražene dodele pre reda kada koristite izraz MERGE koji izvršava dodele lokalnih promenljivih za svaki red

Primenjuje se na
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)

Simptomi

Pretpostavimo da koristite izraz MERGE da biste saznali koliko redova se ne podudara sa izvorom i uskladištite ga u lokalnu promenljivu na sledeći način:

DECLARE
  @NotMatchedBySource INT = 0;

OBJEDINJAVANJE ciljne tabele KORIŠĆENJE izvorne tabele ON TargetTable.id = SourceTable.id
KADA SE NE PODUDARA SA IZVOROM, ONDA
  UPDATE SET @NotMatchedBySource = @NotMatchedBySource + 1;

ŠTAMPAJ @NotMatchedBySource;
GO

U ovom slučaju, možda ćete primetiti da vrednost @NotMatchedBySource posle naredbe MERGE možda ne odražava stvarni broj redova koji se ne podudaraju sa izvorom.

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.

Rešenje

Ovaj problem je rešen u sledećim kumulativnim ispravkama za SQL Server

Osnovni podaci o kumulativnim ispravkama za SQL Server:

Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:

Reference

Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ispravki.