KB4502400 – LØSNING: SQL Server 2014, 2016 og 2017 utfører ikke de forespurte forhåndsradtilordningene når du bruker MERGE-setningen som utfører tilordninger av lokale variabler for hver rad

Gjelder for
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)

Symptomer

Anta at du bruker en setning MERGE for å finne ut hvor mange rader som ikke samsvarer med kilden, og lagre den i en lokal variabel på følgende måte:

DECLARE
  @NotMatchedBySource INT = 0;

MERGE TargetTable USING SourceTable ON TargetTable.id = SourceTable.id
NÅR DET IKKE SAMSVARER MED KILDE, SÅ
  OPPDATER SETT @NotMatchedBySource = @NotMatchedBySource + 1;

SKRIVE UT @NotMatchedBySource;

I denne situasjonen legger du kanskje merke til at verdien for @NotMatchedBySource etter MERGE uttrykket kanskje ikke gjenspeiler det faktiske antallet rader som ikke samsvarer med kilden.

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen «Gjelder for».

Oppløsning

Dette problemet er løst i følgende kumulative oppdateringer for SQL Server

Om kumulative oppdateringer for SQL Server:

Hver nye kumulative oppdatering for SQL Server inneholder alle hurtigreparasjoner og alle sikkerhetsrettinger som fulgte med den forrige kumulative oppdateringen. Ta en titt på de nyeste kumulative oppdateringene for SQL Server:

Kilder

Finn ut mer om terminologien som Microsoft bruker til å beskrive programvareoppdateringer.