KB4502400 – RJEŠENJE: SQL Server 2014, 2016 i 2017 ne izvode tražene dodjele redaka prije korištenja naredbe MERGE koja dodjeljuje lokalne varijable za svaki redak

Primjenjuje 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 naredbu MERGE da biste saznali koliko redaka nije upareno s izvorom i pohranite ih u lokalnu varijablu na sljedeći način:

DECLARE
  @NotMatchedBySource INT = 0;

SPOJI Ciljnu Tablicu KORIŠTENJE Izvorne Tablice ON TargetTable.id = SourceTable.id
KADA SE NE PODUDARA S IZVOROM,
  SKUP AŽURIRANJA @NotMatchedBySource = @NotMatchedBySource + 1;

ISPIS ;@NotMatchedBySource
GO

U toj situaciji možda ćete primijetiti da vrijednost @NotMatchedBySource nakon naredbe MERGE ne odražava stvarni broj redaka koji nisu upareni s izvorom.

Status

Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.

Rješenje

Taj je problem riješen u sljedećim kumulativnim ažuriranjima za SQL Server

O kumulativnim ažuriranjima za SQL Server:

Svako novo kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sigurnosne popravke koji su obuhvaćeni prethodnim kumulativnim ažuriranjem. Pogledajte najnovija kumulativna ažuriranja za SQL Server:

Reference

Saznajte više o terminologiji koju Microsoft upotrebljava za opisivanje softverskih ažuriranja.