Príznaky
Predpokladajme, že používate Microsoft SQL Server 2016 alebo 2017. Pri spracovaní údajových transakcií s optimalizovanými pamäťami pomocou premenných s pamäťou optimalizovanou v príkaze where existuje , môže sa vyskytnúť nesprávny výsledok.
Príklad:
Krok krok: vytvorenie databázy a tabuľky optimalizovanej pre pamäť.
Vytvorenie ukážky databázy
ZMENIŤ databázu s ukážkou Pridanie skupiny súborov demo_mod obsahuje MEMORY_OPTIMIZED_DATA
ZMENIŤ databázu demo pridať súbor (Name = ' demo_mod1 '; filename = ' C:\DATA\ demo_mod1 ') do skupiny súborov demo_mod
Používanie ukážky
Ísť
Vytvorte typ dbo. IN_MEMORY_TABLE_TYPE TABUĽKY
(source_col INT NULL,
target_col INT NOT NULL
INDEX ix_InMemoryTable neskupinový (target_col)
) S (MEMORY_OPTIMIZED = ZAPNUTÉ)
ÍSŤ
Krok krok: Vloženie údajov a aktualizácia údajov.
DEKLAROVAnie @t dbo. IN_MEMORY_TABLE_TYPE
Vložiť @t (source_col, target_col) hodnoty (10; 0), (0; 0)
Vyberte * z @t
UPDATE R1 SET target_col =-1 z @t R1
KDE existuje (vyberte * z @t R2, kde r2.source_col > 0)
Vyberte * z @t
ÍSŤ
Krok3: Kontrola výsledkov.
Skutočné výsledky: nie všetky riadky premennej tabuľky @t sa aktualizujú.
source_col | target_col
----------------------
10 | -1
0 | 0
Očakávané výsledky: všetky riadky by mali byť aktualizované, aby mali target_col =-1.
source_col | target_col
----------------------
10 | -1
0 | 1.
Riešenie
Tento problém je vyriešený v nasledujúcich kumulatívnych aktualizáciách pre SQL Server:
Informácie o kumulatívnych aktualizáciách pre SQL Server:
Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.
Odkazy
Oboznámte sa s terminológiou, ktorú spoločnosť Microsoft používa na popis aktualizácií softvéru.