Simptomai
Tarkime, kad naudojate "Microsoft SQL Server" 2016 arba "2017". Kai apdorosite atmintį optimizuotos duomenų operacijos naudojant atminties optimizuotą lentelės kintamuosius su WHERE esama patvirtinimu, gali būti, kad gaunate klaidingą rezultatą.
Pavyzdžiui:
Žingsnis: Sukurkite atminties optimizuotą duomenų bazę ir lentelę.
DUOMENŲ bazės kūrimo Demonstracija
PAKEISTI duomenų bazės demonstraciją įtraukti failų grupę demo_mod yra MEMORY_OPTIMIZED_DATA
PAKEISTI duomenų bazės demo įtraukti failą (name = "demo_mod1", filename = "C:\DATA\ demo_mod1") į failų grupę demo_mod
Naudoti demonstraciją
Eiti
KURTI dbo tipą. IN_MEMORY_TABLE_TYPE KAIP LENTELĘ
(source_col INT NULL,
target_col INT not NULL
INDEKSAS ix_InMemoryTable NONCLUSTERED (target_col)
) SU (MEMORY_OPTIMIZED = ON)
EITI
Step2: duomenų įterpimas ir duomenų naujinimas.
PASKELBTI @t dbo. IN_MEMORY_TABLE_TYPE
Įterpti @t (source_col, target_col) reikšmes (10,0) (0, 0)
Pasirinkite * iš @t
ATNAUJINTI R1 SET target_col =-1 nuo @t R1
KUR yra (pasirinkite * nuo @t R2, kur r2.source_col > 0)
Pasirinkite * iš @t
EITI
3 žingsnis: Peržiūrėkite rezultatus.
Faktiniai rezultatai: ne visos lentelės kintamojo eilutės @t atnaujinti.
source_col | target_col
----------------------
10 | -1
0 | 0
Numatomi rezultatai: visos eilutės turėtų būti atnaujintos, kad būtų target_col =-1.
source_col | target_col
----------------------
10 | -1
0 | -1.
Sprendimas
Ši problema išspręsta SQL serverio kaupiamajame naujinime:
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server 2017"
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.
Nuorodos
Sužinokite apie terminologiją, kurią "Microsoft" naudoja programinės įrangos naujinimams apibūdinti.