KB4135113-FIX: evidentiranje promjena nije u skladu s ažuriranjem u tablici koja ima grupirani ili jedinstveni indeks u sustavu SQL Server

Simptomi

Kada pokrenete ažuriranje u tablici koja ima grupirani ili jedinstveni indeks, a ažuriranje se pojavljuje na neprimarnom jedinstvenom stupcu, zapis praćenja promjena nije dosljedan s izjavom Update.

Pretpostavimo, primjerice, da je stupac koji se zove "column1" , u grupnom ili jedinstvenom indeksu". Kada se vrijednost stupca promeni iz veće u manju vrijednost (kao što je promjena vrijednosti od 20 do 16), tablica promjena tablice praćenja prima Postupak umetanja prije operacije brisanja. Ako, primjerice, Postupak umetanja zapisnika u zapisnik transakcije primi prije brisanja operacije retka ili "I" umeće se prije "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 vrijednost stupca promijeni od manjeg do vrijednosti (kao što je promjena vrijednosti od 16 do 20), "D" umeće se prije "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

Taj se problem pojavljuje zbog netočnog redoslijeda između brisanja/umetanja parova u stranu tablica za praćenje promjena.

Rješenje

Rješavanje tog problema obuhvaćeno je sljedećim ažuriranjima za SQL Server:

         Kumulativno ažuriranje 8 za SQL Server 2017

         Kumulativno ažuriranje 9 za SQL Server 2016 Service Pack 1

Kumulativno ažuriranje 12 za SQL Server 2014 SP2

O izradi sustava SQL Server

Svaki novi međuverzija za SQL Server sadrži sve hitne popravke i sigurnosne popravke koji su bili u prethodnoj izradi. Preporučujemo da instalirate najnoviju izgradnju za SQL Server:

Najnovije Kumulativno ažuriranje za SQL Server 2017

Najnovija verzija za SQL Server 2016

Najnovije Kumulativno ažuriranje za SQL Server 2014

Status

Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".

Dodatne informacije

Ako je u tablici omogućeno praćenje promjena, kada se ažuriranje pojavljuje na stupcu koji nije primarni, koji je definiran kao jedinstven, u tablicu promjena tablice praćenja umeće se dva unosa: jedan unos za svaku od razdijeljenih akcija, umetanje i brisanje.

Kada se funkcija Changetable poziva na numeriranje promjena, te se stavke sortiraju prema vrijednostima primarnog ključa, a zatim se operacije objedinuju. Ako ažuriranje umeće nižu vrijednost, najprije se pokreće operacija "I" na strani tablica, a zatim operacija "D". To uzrokuje neispravnu operaciju koja se vraća za ovaj redak. To je zato što je "I" slijedi "D" je agregiran kao "D".

Budući da se u bočne tablice zadržavaju samo vrijednosti primarnog ključa, nije potrebno imati dva odvojena unosa. To vrijedi sve dok se stupac primarni ključ ne ažurira.

Taj je problem riješen za jedinstvene stupce koji nisu primarni. U ovom slučaju, kada se ažuriranje pojavi, umeće se samo jedan redak tako da imate "U" kao operaciju ažuriranja, a ne dva unosa koja imaju "D" i "i".

Reference

Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ažuriranja.

Potrebna vam je dodatna pomoć?

Proširite svoje vještine
Istražite osposobljavanje
Prvi koristite nove značajke
Pridružite se Microsoft Insidere

Jesu li ove informacije bile korisne?

Hvala vam na povratnim informacijama!

Hvala vam na povratnim informacijama! Čini se da bi vam pomoglo kad bismo vas povezali s nekim od naših agenata podrške za Office.

×