KB4502400 — LABOJUMS: SQL Server 2014, 2016 un 2017 neveic pieprasītos pirmsrindu piešķiršanu, kad izmantojat priekšrakstu MERGE, kas piešķir lokālos mainīgos katrai rindai

Attiecas uz
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)

Pazīmes

Pieņemsim, ka izmantojat priekšrakstu MERGE, lai uzzinātu, cik rindu nav saskaņots ar avotu, un saglabātu to lokālajā mainīgajā šādi:

DECLARE
  @NotMatchedBySource INT = 0;

MERGE TargetTable USING SourceTable ON TargetTable.id = SourceTable.id
JA NEATBILST AVOTAM, TAD
  ATJAUNINĀJUMU KOMPLEKTS @NotMatchedBySource = @NotMatchedBySource + 1;

DRUKĀT @NotMatchedBySource;
GO

Šādā gadījumā pamanīsit, ka @NotMatchedBySource vērtība pēc priekšraksta MERGE var neatspoguļot faktisko rindu skaitu, kurām avots neatbilst neatbilstoši.

Statuss

Microsoft apstiprināja, ka šī ir problēma Microsoft produktos, kas norādīti sadaļā "attiecas uz".

Risinājums

Šī problēma ir novērsta šādos SQL Server kumulatīvajos atjauninājumos

Par SQL Server kumulatīvajiem atjauninājumiem:

Katrā jaunajā SQL Server kumulatīvajā atjauninājumā ir visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos SQL Server kumulatīvos atjauninājumus:

Atsauces

Uzziniet par terminoloģiju, ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.