Symptomen

Wanneer u een update uitvoert voor een tabel met een geclusterde of unieke index en de update plaatsvindt in een niet-primaire unieke kolom, is de record voor het bijhouden van wijzigingen inconsistent met de update-instructie.

Stel dat een kolom met de naam kolom1 is opgenomen in de geclusterde of unieke index. Wanneer de kolomwaarde wordt gewijzigd van een grotere in een kleinere waarde (zoals het wijzigen van de waarde van 20 in 16), ontvangt de zijtabel voor het bijhouden van wijzigingen de invoegbewerking voordat de verwijderbewerking wordt uitgevoerd. De bewerking rijrecord invoegen in het transactielogboek wordt bijvoorbeeld ontvangen voordat de bewerking rij verwijderen of 'I' wordt ingevoegd vóór '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


Wanneer de kolomwaarde wordt gewijzigd van een kleinere in een grotere waarde (zoals het wijzigen van de waarde van 16 in 20), wordt 'D' ingevoegd vóór '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

Oorzaak

Dit probleem treedt op vanwege een onjuiste volgorde tussen verwijder-/invoegparen in de bijzettabel voor het bijhouden van wijzigingen.

Oplossing

De oplossing voor dit probleem is opgenomen in de volgende updates voor SQL Server:

         Cumulatieve update 8 voor SQL Server 2017

         Cumulatieve update 9 voor SQL Server 2016 Service Pack 1

Cumulatieve update 12 voor SQL Server 2014 SP2

Over SQL Server builds

Elke nieuwe build voor SQL Server bevat alle hotfixes en beveiligingscorrecties die in de vorige build waren. U wordt aangeraden de nieuwste build voor SQL Server te installeren:

Meest recente cumulatieve update voor SQL Server 2017

nieuwste build voor SQL Server 2016

Meest recente cumulatieve update voor SQL Server 2014

Status

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer informatie

Als voor een tabel met wijzigingen bijhouden een update wordt uitgevoerd op een niet-primaire kolom die uniek is gedefinieerd, worden er twee vermeldingen ingevoegd in de zijtabel voor het bijhouden van wijzigingen: één vermelding voor elk van de gesplitste acties, Invoegen en Verwijderen.

Wanneer de functie CHANGETABLE wordt aangeroepen om de wijzigingen op te sommen, worden deze vermeldingen gesorteerd op primaire sleutelwaarden en worden de bewerkingen vervolgens geaggregeerd. Als de update een lagere waarde invoegt, wordt eerst een 'I'-bewerking uitgevoerd op de zijtabel, gevolgd door een 'D'-bewerking. Hierdoor wordt een onjuiste bewerking geretourneerd voor deze rij. Dit komt omdat 'I' gevolgd door 'D' is geaggregeerd als 'D'.

Omdat alleen de primaire-sleutelwaarden in de bijtabellen worden bijgehouden, hoeft u geen twee afzonderlijke vermeldingen te hebben. Dit geldt zolang de primaire sleutelkolom niet wordt bijgewerkt.

Dit probleem is opgelost voor niet-primaire unieke kolommen. In dit geval wordt, wanneer de update plaatsvindt, slechts één rij ingevoegd door 'U' als updatebewerking te hebben in plaats van twee vermeldingen met 'D' en 'I'.

Verwijzingen

Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?

Bedankt voor uw feedback.

×