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:
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.