KB4502400 - CORREZIONE: SQL Server 2014, 2016 e 2017 non eseguono le assegnazioni di pre-riga richieste quando si usa l'istruzione MERGE che esegue assegnazioni di variabili locali per ogni riga

Si applica a
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)

Sintomi

Si supponga di usare l'istruzione MERGE per determinare il numero di righe non corrispondenti all'origine e archiviarlo in una variabile locale come indicato di seguito:

DECLARE
  @NotMatchedBySource INT = 0;

MERGE TargetTable USING SourceTable ON TargetTable.id = SourceTable.id
QUANDO NON CORRISPONDE ALLA FONTE ALLORA
  UPDATE SET @NotMatchedBySource = @NotMatchedBySource + 1;

STAMPA ;@NotMatchedBySource
ANDARE

In questo caso, è possibile notare che il valore di @NotMatchedBySource dopo l'istruzione MERGE potrebbe non riflettere il numero effettivo di righe non corrispondenti all'origine.

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".

Risoluzione

Questo problema è stato risolto nei seguenti aggiornamenti cumulativi per SQL Server

Informazioni sugli aggiornamenti cumulativi per SQL Server:

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nell'aggiornamento cumulativo precedente. Scopri gli aggiornamenti cumulativi più recenti per SQL Server:

Riferimenti

Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.