Si applica a
SQL Server 2016 Service Pack 1 SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 on Windows (all editions)

Sintomi

Si supponga di usare Microsoft SQL Server 2016 o 2017. Quando si elaborano transazioni dati ottimizzate per la memoria utilizzando variabili di tabella ottimizzate per la memoria con l'istruzione where exists , si potrebbe ottenere un risultato errato.

Ad esempio:

Passaggio 1: Creare una tabella e un database ottimizzati per la memoria.

Creare una demo di DATABASE

ALTER DATABASE demo ADD FILEGROUP demo_mod CONTAINS MEMORY_OPTIMIZED_DATA 

ALTER DATABASE demo ADD FILE (name='demo_mod1', filename='C:\DATA\demo_mod1') TO FILEGROUP demo_mod 

Usare demo

Andare

CREATE TYPE dbo. IN_MEMORY_TABLE_TYPE AS TABLE

( source_col INT NULL,

target_col INT non NULL

INDICE ix_InMemoryTable NON CLUSTER (target_col)

) WITH (MEMORY_OPTIMIZED = ON)

ANDARE

Passaggio 2: Inserire dati e aggiornare i dati.

DECLARE @t dbo. IN_MEMORY_TABLE_TYPE

INSERISCI @t ( source_col, target_col ) VALORI (10, 0),(0, 0)

seleziona * da @t

UPDATE r1 SET target_col = -1 FROM @t r1

WHERE EXISTS ( SELECT * FROM @t r2 WHERE r2.source_col > 0 )

SELECT * FROM @t

ANDARE

Passaggio 3: Controllare i risultati.

Risultati effettivi: non tutte le righe della variabile di tabella @t vengono aggiornate.

source_col | target_col

----------------------

10 | -1

0 | 0

Risultati previsti: tutte le righe devono essere aggiornate in modo che abbiano target_col = -1.

source_col | target_col

----------------------

10 | -1

0 | -1.

Risoluzione

Questo problema è stato risolto negli aggiornamenti cumulativi seguenti per SQL Server:

      Aggiornamento cumulativo 1 per SQL Server 2017 

      Aggiornamento cumulativo 5 per SQL Server 2016 SP1

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:

Ultimo aggiornamento cumulativo per SQL Server 2017

Aggiornamenti cumulativi più recenti per SQL Server 2016

Stato

Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".

Riferimenti

Informazioni sulla terminologiautilizzata da Microsoft per descrivere gli aggiornamenti software.

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.