Simptomi
Pieņemsim, ka izmantojat Microsoft SQL Server 2016 vai 2017. Kad veicat atmiņā optimizētas datu transakcijas, izmantojot atmiņā optimizētus tabulas mainīgos ar priekšrakstiem WHERE , iespējams, tiek parādīts nepareizs rezultāts.
Piemēram:
Iezīmējāt 1: Izveidojiet atmiņā optimizētu datu bāzi un tabulu.
DATU bāzes demonstrācijas izveide
DATU bāzes demonstrācijas pievienošana FILEGROUP demo_mod satur MEMORY_OPTIMIZED_DATA
MAINĪT datu bāzes demonstrācijas ADD FILE (name = ' demo_mod1 ', filename = ' C:\DATA\ demo_mod1 ') uz FILEGROUP demo_mod
Demonstrācijas lietošana
Iet
IZVEIDOT dbo. IN_MEMORY_TABLE_TYPE KĀ TABULU
(source_col INT NULL
target_col INT nav NULL
Ix_InMemoryTable nesagrupēti INDEKSi (target_col)
) AR (MEMORY_OPTIMIZED = IESLĒGTS)
IET
Aprakstā: datu ievietošana un datu atjaunināšana.
DEKLARĒ @t dbo. IN_MEMORY_TABLE_TYPE
@T (source_col, target_col) vērtību ievietošana (10,0), (0,0)
Atlasiet * no @t
ATJAUNINĀT R1 SET target_col =-1 no @t R1
KUR pastāv (atlasiet * no @t R2, kur r2.source_col > 0)
Atlasiet * no @t
IET
Step3: rezultātu pārbaude.
Faktiskie rezultāti: ne visas tabulas mainīgās rindas @t tiek atjauninātas.
source_col | target_col
----------------------
10 | -1
0 | 0
Paredzamie rezultāti: visas rindas ir jāatjaunina, lai būtu target_col =-1.
source_col | target_col
----------------------
10 | -1
0 | -1.
Risinājums
Šī problēma ir novērsta tālāk norādītajos kumulatīvajos SQL Server atjauninājumos:
Katrā jaunajā kumulatīvajā SQL Server atjauninājumā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos kumulatīvos atjauninājumus SQL Server:
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".
Atsauces
Uzziniet par terminoloģiju, ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.