Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Simptome

Atunci când rulați o actualizare într-un tabel care are un index unic sau grupat și actualizarea are loc într-o coloană unică non-primară, înregistrarea de urmărire a modificărilor nu este consistentă cu instrucțiunea de actualizare.

De exemplu, să presupunem că o coloană denumită "coloana1" este inclusă în indexul unic sau grupat. Atunci când valoarea coloanei este modificată de la o valoare mai mare la o valoare mai mică (cum ar fi modificarea valorii de la 20 la 16), tabelul lateral de urmărire a modificărilor primește operațiunea de inserare înainte de operațiunea de ștergere. De exemplu, operațiunea de inserare a înregistrării rândului din jurnalul de tranzacții este primită înainte de operațiunea de ștergere a rândului sau de inserarea "I" înainte de "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


Atunci când valoarea coloanei este modificată de la o valoare mai mică la o valoare mai mare (cum ar fi modificarea valorii de la 16 la 20), se inserează "D" înainte de "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

Cauză

Această problemă apare din cauza unei ordini incorecte între perechile de ștergere/inserare din tabelul lateral de urmărire a modificărilor.

Rezolvare

Remedierea pentru această problemă este inclusă în următoarele actualizări pentru SQL Server:

         Actualizarea cumulativă 8 pentru SQL Server 2017

         Actualizarea cumulativă 9 pentru SQL Server 2016 Service Pack 1

Actualizarea cumulativă 12 pentru SQL Server 2014 SP2

Despre versiunile SQL Server

Fiecare versiune nouă pentru SQL Server conține toate remedierile rapide și remedierile de securitate care au fost în versiunea anterioară. Vă recomandăm să instalați cea mai recentă versiune pentru SQL Server:

Cea mai recentă actualizare cumulativă pentru SQL Server 2017

cea mai recentă versiune pentru SQL Server 2016

Cea mai recentă actualizare cumulativă pentru SQL Server 2014

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Mai multe informații

Pentru un tabel activat pentru urmărirea modificărilor, atunci când are loc o actualizare într-o coloană non-principală definită a fi unică, sunt inserate două intrări în tabelul lateral de urmărire a modificărilor: o intrare pentru fiecare dintre acțiunile de scindare, Inserare și Ștergere.

Atunci când funcția CHANGETABLE este apelată pentru enumerarea modificărilor, aceste intrări sunt sortate după valorile cheii primare, apoi operațiunile sunt agregate. Dacă actualizarea inserează o valoare mai mică, se execută mai întâi o operațiune "I" în tabelul lateral, urmată de o operațiune "D". Acest lucru provoacă o operațiune incorectă returnată pentru acest rând. Acest lucru se întâmplă deoarece "I" urmat "D" este agregat ca "D".

Deoarece numai valorile cheii primare sunt menținute în tabelele laterale, nu este necesar să aveți două intrări separate. Acest lucru este valabil atât timp cât coloana cheii primare nu se actualizează.

Această problemă este remediată pentru coloanele unice non-primare. În acest caz, atunci când are loc actualizarea, se inserează un singur rând, având "U" ca operațiune de actualizare în loc de două intrări care au "D" și "I".

Referințe

Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×