Applies ToSQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Simptomi

Kada pokrenete ažuriranje na tablici koja ima grupirani ili jedinstveni indeks, a ažuriranje se odvija u ne-primarnom jedinstvenom stupcu, zapis evidentiranja promjena nije usklađen s izjavom ažuriranja.

Pretpostavimo, primjerice, da je stupac naziva "stupac1" uvršten u grupirani ili jedinstveni indeks. Kada se vrijednost stupca promijeni iz veće u manju vrijednost (kao što je promjena vrijednosti iz 20 u 16), bočna tablica evidentiranja promjena primit će operaciju umetanja prije operacije brisanja. Operacija umetanja zapisa retka zapisnika transakcija, primjerice, prima se prije operacije brisanja retka ili "I" prije "D".

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

Kada se vrijednost stupca promijeni iz manje u veću vrijednost (kao što je promjena vrijednosti iz 16 u 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

I

NULL

NULL

5639485628

Uzrok

Taj se problem pojavljuje zbog neispravnog redoslijeda između parova brisanja/umetanja u bočnoj tablici evidentiranja promjena.

Rješenje

Rješenje 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 SQL Server međuverzijama

Svaka nova međuverzija za SQL Server sadrži sve hitne popravke i sigurnosne popravke koji su se nalazili u prethodnoj međuverziji. Preporučujemo da instalirate najnoviju međuverziju za SQL Server:

Najnovije kumulativno ažuriranje za SQL Server 2017.

najnovija međuverzija za SQL Server 2016.

Najnovije kumulativno ažuriranje za SQL Server 2014.

Status

Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku "Odnosi se na".

Dodatne informacije

Kada je u tablici omogućeno evidentiranje promjena, kada se ažuriranje dogodi u stupcu koji nije primarni, a koji je definiran kao jedinstven, u bočnu tablicu evidentiranja promjena umetnu se dva unosa: jedan unos za svaku od podijeljenih akcija, Umetanje i Brisanje.

Kada se funkcija CHANGETABLE poziva da enumerira promjene, ti se unosi sortiraju prema vrijednostima primarnog ključa, a zatim se operacije zbrajaju. Ako ažuriranje umetne nižu vrijednost, najprije se na bočnoj tablici izvodi operacija "I", a zatim operacija "D". Zbog toga se za ovaj redak vraća pogrešna operacija. To je zato što se "I" nakon "D" zbraja kao "D".

Budući da se u bočnim tablicama održavaju samo vrijednosti primarnog ključa, nije potrebno imati dva zasebna unosa. To vrijedi sve dok se stupac primarnog ključa ne ažurira.

Taj je problem riješen za ne-primarne jedinstvene stupce. U tom slučaju, kada se ažuriranje dogodi, samo se jedan redak umeće tako da kao operaciju ažuriranja umjesto dva unosa koja imaju "D" i "I" umetnete "U".

Reference

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

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.