Príznaky
Keď spustíte aktualizáciu v tabuľke, ktorá má skupinový alebo jedinečný index, a táto aktualizácia sa vykoná v inom než primárnom jedinečnom stĺpci, záznam sledovania zmien je v rozpore s príkazom update.
Predpokladajme napríklad, že stĺpec s názvom Stĺpec1 je zahrnutý do skupinového alebo jedinečného indexu. Po zmene hodnoty stĺpca z vyššej na nižšiu (napríklad po zmene hodnoty z 20 na hodnotu 16) prijme bočná tabuľka sledovania zmien operáciu vloženia pred operáciou odstránenia. Operácia vloženia záznamu riadka denníka transakcií sa napríklad prijme pred operáciou odstránenia riadka alebo pred D sa vloží "I".
| Sys_change_version | sys_change_create_version | sys_change_operation | sys_change_column | sys_change_context | PK_column |
|---|---|---|---|---|---|
| 1116 | 19 | I | NULL | NULL | 5639485628 |
| 1116 | 20 | D | NULL | NULL | 5639485628 |
Pri zmene hodnoty stĺpca z menšej na vyššiu (napríklad zmena hodnoty z 16 na 20), pred hodnotu I sa vloží D.
| Sys_change_version | sys_change_create_version | sys_change_operation | sys_change_column | sys_change_context | PK_column |
|---|---|---|---|---|---|
| 1126 | 32 | D | NULL | NULL | 5639485628 |
| 1126 | 33 | I | NULL | NULL | 5639485628 |
Príčina
Tento problém sa vyskytuje z dôvodu nesprávneho zoradenia párov mazať a vložiť v bočnej tabuľke sledovania zmien.
Riešenie
Opravu tohto problému obsahujú nasledujúce aktualizácie pre SQL Server:
Kumulatívna aktualizácia 8 pre SQL Server 2017
Kumulatívna aktualizácia 9 pre balík Service Pack 1 pre SQL Server 2016
Kumulatívna aktualizácia 12 pre SQL Server 2014 SP2
Informácie o zostavách SQL Server
Každá nová zostava SQL Server obsahuje všetky rýchle opravy a opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej zostavy. Odporúčame vám nainštalovať najnovšiu zostavu pre SQL Server:
Najnovšia kumulatívna aktualizácia pre SQL Server 2017
najnovšia zostava pre SQL Server 2016
Najnovšia kumulatívna aktualizácia pre SQL Server 2014
Stav
Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.
Ďalšie informácie
V tabuľke so zapnutým sledovaním zmien sa po aktualizácii neprimárneho stĺpca, ktorý je definovaný ako jedinečný, do bočnej tabuľky sledovania zmien vložia dve položky: Jedna položka pre každú akciu rozdelenia, Vložiť a Odstrániť.
Pri volaní funkcie CHANGETABLE na vymenovanie zmien sa tieto položky zoradia podľa hodnôt primárneho kľúča a potom sa operácie zoskupia. Ak aktualizácia vloží nižšiu hodnotu, najskôr sa na bočnom stole spustí operácia I, po ktorej nasleduje operácia D. Tento krok spôsobí vrátenie nesprávnej operácie pre daný riadok. Je to preto, že "ja" nasledujúce "D" sa zhrnú ako "D".
Keďže bočné tabuľky uchovávajú iba hodnoty hlavného kľúča, nie je potrebné mať dve samostatné položky. Toto platí, pokiaľ nie je stĺpec primárneho kľúča aktualizovaný.
Tento problém je opravený pre neprimárne jedinečné stĺpce. V tomto prípade sa pri aktualizácii vloží iba jeden riadok s aktualizačnou operáciou "U" namiesto dvoch položiek, ktoré obsahujú D a I.
Odkazy
Získajte informácie o terminológii , ktorú Microsoft používa na popis aktualizácií softvéru.