Sümptomid
Oletagem, et kasutate Microsoft SQL Server 2016 või 2017. Kui töötlete mälu optimeeritud andmeid, kasutades mälu optimeeritud tabeli muutujaid, kus on olemas lause, võite saada vale tulemuse.
Näiteks:
Step1: saate luua mälu optimeeritud andmebaasi ja tabeli.
ANDMEBAASI demo loomine
Muuda andmebaasi demo lisa FAILIRÜHMA demo_mod sisaldab MEMORY_OPTIMIZED_DATA
Muuda andmebaasi demo faili lisamine (nimi = ' demo_mod1 ', filename = ' C:\DATA\ demo_mod1 '), et FAILIRÜHMA demo_mod
Demo kasutamine
Minna
Loo tüüp dbo. IN_MEMORY_TABLE_TYPE TABELINA
(source_col INT NULL;
target_col INT NOT NULL
INDEKS ix_InMemoryTable RÜHMITAmata (target_col)
) KOOS (MEMORY_OPTIMIZED = SEES)
MINNA
STEP2: andmete lisamine ja andmete värskendamine.
DEKLAREERIge @t dbo. IN_MEMORY_TABLE_TYPE
@T (source_col; target_col) väärtuste lisamine (10; 0) (0; 0)
Valige * from @t
UPDATE R1 SET target_col =-1 alates @t R1
KUI on olemas (valige * @t R2-st, kus r2.source_col > 0)
Valige * FROM @t
MINNA
Step3: kontrolli tulemusi.
Tegelikud tulemid: kõiki tabeli muutuja ridu @t ei saa värskendada.
source_col | target_col
----------------------
10 | -1
0 | 0
Oodatud tulemid: kõigil ridadel peaks olema värskendatud target_col =-1.
source_col | target_col
----------------------
10 | -1
0 | -1.
Lahendus
See probleem on lahendatud SQL serveri järgmisi kumulatiivseid värskendusi.
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Vaadake SQL serveri kumulatiivseid värskendusi.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Viited
Siit leiate teavet selle kohta, mida Microsoftkasutab tarkvaravärskenduste kirjeldamiseks.