KB4502400 – OPRAVA: SQL Server 2014, 2016 a 2017 neprovedou požadovaná přiřazení před řádkem, když použijete příkaz MERGE, který provádí přiřazení místních proměnných pro každý řádek

Platí pro
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)

Příznaky

Předpokládejme, že pomocí příkazu MERGE zjistíte, kolika řádkům se neshoduje zdroj, a uložíte ho do místní proměnné následujícím způsobem:

DECLARE
  @NotMatchedBySource INT = 0;

MERGE TargetTable USING SourceTable ON TargetTable.id = SourceTable.id
POKUD NENÍ NALEZENA SHODA SE ZDROJEM, PAK
  UPDATE SET @NotMatchedBySource = @NotMatchedBySource + 1;

TISK;@NotMatchedBySource
PŘEJÍT

V této situaci si můžete všimnout, že hodnota @NotMatchedBySource za příkazem MERGE nemusí odrážet skutečný počet řádků, kterým zdroj neodpovídá.

Stav

Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.

Řešení

Tento problém je opravený v následujících kumulativních aktualizacích pro SQL Server

Informace o kumulativních aktualizacích pro SQL Server:

Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:

Reference

Podívejte se na informace o terminologii, kterou společnost Microsoft používá k popisování aktualizací softwaru.