Se aplică la
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)

Simptome

Să presupunem că utilizați Microsoft SQL Server 2016 sau 2017. Când procesați tranzacții de date optimizate pentru memorie utilizând variabile de tabel optimizate pentru memorie cu instrucțiunea "unde există ", este posibil să obțineți un rezultat greșit.

De exemplu:

Pasul 1: Creați o bază de date și un tabel optimizate pentru memorie.

Creare demonstrație BAZĂ DE DATE

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 

Utilizare demonstrație

Merge

CREATE TYPE dbo. IN_MEMORY_TABLE_TYPE CA TABEL

( source_col INT NULL,

target_col INT nu este NULL

INDEX ix_InMemoryTable NEAGLOMERAT (target_col)

) CU (MEMORY_OPTIMIZED = ACTIVAT)

MERGE

Pasul 2: Inserați date și actualizați date.

DECLARE @t dbo. IN_MEMORY_TABLE_TYPE

INSERARE @T ( source_col, target_col ) VALORI (10, 0),(0, 0)

select * from @t

UPDATE r1 SET target_col = -1 FROM @t r1

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

SELECT * FROM @t

MERGE

Pasul 3: Verificați rezultatele.

Rezultate reale: Nu toate rândurile variabilei de tabel @t se actualizează.

source_col | target_col

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

10 | -1

0 | 0

Rezultatele așteptate: Toate rândurile ar trebui să fie actualizate pentru a avea target_col = -1.

source_col | target_col

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

10 | -1

0 | -1.

Rezolvare

Această problemă este remediată în următoarele actualizări cumulative pentru SQL Server:

      Actualizarea cumulativă 1 pentru SQL Server 2017 

      Actualizarea cumulativă 5 pentru SQL Server 2016 SP1

Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:

Cea mai recentă actualizare cumulativă pentru SQL Server 2017

Cele mai recente actualizări cumulative pentru SQL Server 2016

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Referințe

Aflați despre terminologiape care o utilizează Microsoft pentru a descrie actualizările de software.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.