KB4135113 - ISPRAVKA: Zapis praćenja promena je nedosledan tokom ažuriranja tabele koja ima grupisan ili jedinstven indeks u SQL Serveru

Simptomi

Kada pokrenete ispravku na tabeli koja ima grupisani ili jedinstveni indeks, a ažuriranje se pojavljuje u ne-primarnoj jedinstvenoj koloni, zapis praćenja promena nije u skladu sa izvodom ažuriranja.

Na primer, pretpostavimo da je kolona pod imenom"kolona1" uključena u grupisani ili jedinstveni indeks. Kada se vrednost kolone promeni iz veće u manju vrednost (kao što je promena vrednosti sa 20 na 16), bočna tabela praćenja promena dobija operaciju umetanja pre operacije brisanja. Na primer, operacija umetanja zapisa reda evidencije transakcije se prima pre operacije brisanja reda ili se "I" umeće pre "D".

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1116

19

Sam

Null

Null

5639485628

1116

20

D

Null

Null

5639485628

Kada se vrednost kolone promeni iz manje u veću vrednost (kao što je promena vrednosti sa 16 na 20), "D" se umeće pre "I".

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

Sam

Null

Null

5639485628

Uzrok

Do ovog problema dolazi zbog netačnog redosleda između parova za brisanje/umetanje u bočnu tabelu praćenja promena.

Rešenje

Ispravka za ovaj problem je uključena u sledeće ispravke za SQL Server:

         Kumulativna ispravka 8 za SQL Server 2017

         Kumulativna ispravka 9 za SQL Server 2016 servisni paket 1

Kumulativna ispravka 12 za SQL Server 2014 SP2

Osnovni podaci o SQL Server builds

Svaka nova verzija za SQL Server sadrži sve hitne ispravke i bezbednosne ispravke koje su bile u prethodnoj verziji. Preporučujemo da instalirate najnoviju verziju za SQL Server:

Najnovija kumulativna ispravka za SQL Server 2017

najnovija izrada za SQL Server 2016

Najnovija kumulativna ispravka za SQL Server 2014

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".

Više informacija

Za tabelu omogućeno praćenje promena, kada se ažuriranje dogodi u koloni koja nije primarna, a koja je definisana da bude jedinstvena, dve stavke se umeću u bočnu tabelu praćenja promena: po jedna stavka za svaku razdeljenu radnju, "Umetni i izbriši".

Kada je funkcija CHANGETABLE pozvana da nabroja promene, ove stavke se sortiraju po vrednostima primarnog ključa, a zatim se operacije prikupljaju. Ako ispravka umetne manju vrednost, prvo se u bočnoj tabeli pokrene operacija "I", a zatim sledi operacija "D". Ovo dovodi do toga da se vrati netačna operacija za ovaj red. To je zato što je "I" praćeno sa "D" agregirano kao "D".

Pošto se u bočnim tabelama održavaju samo vrednosti primarnog ključa, nije neophodno da imate dve zasebne stavke. Ovo važi sve dok se kolona primarnog ključa ne ažurira.

Ovaj problem je rešen za ne-primarne jedinstvene kolone. U ovom slučaju, kada dođe do ažuriranja, samo jedan red se umeće tako što se "U" umesto dve stavke imaju "D" i "I".

Reference

Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ispravki.

Potrebna vam je dodatna pomoć?

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Microsoft insajdere

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Izgleda da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×