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

Симптоми

Когато изпълните актуализация на таблица, която има клъстериран или уникален индекс и актуализацията възниква в не основен уникална колона, запис за проследяване на промените е несъвместим с командата за актуализиране.

Да предположим например, че колона с име "колона1" е включена в индекса с клъстери или уникален индекс. Когато стойността на колоната се промени от по-голяма на по-малка стойност (например промяната на стойността от 20 на 16), таблицата от страната за проследяване на промените получава операцията за вмъкване преди операцията за изтриване. Например операцията за вмъкване на запис на ред в регистрационния файл на транзакциите се получава преди операцията за изтриване на ред или преди "D" е вмъкнато "I".

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

Когато стойността на колоната се промени от по-малка на по-голяма стойност (например промяната на стойността от 16 на 20), преди "I" се вмъква "D".

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

Причина

Този проблем възниква поради неправилно подреждане между двойки за изтриване/вмъкване в страничната таблица за проследяване на промените.

Решение

Корекцията за този проблем е включена в следните актуализации за SQL Server:

         Кумулативна актуализация 8 за SQL Server 2017 г.

         Кумулативна актуализация 9 за SQL Server 2016 Service Pack 1

Кумулативна актуализация 12 за SQL Server 2014 SP2

За компилациите за SQL Server

Всяка нова компилация за SQL Server съдържа всички горещи поправки и корекции на защитата, които са били в предишната компилация. Препоръчваме ви да инсталирате най-новата компилация за SQL Server:

Най-нова кумулативна актуализация за SQL Server 2017

най-новата компилация за SQL Server 2016

Най-нова кумулативна актуализация за SQL Server 2014

Статут

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".

Допълнителна информация

За таблица с разрешено проследяване на промени, когато възникне актуализация в неосновна колона, която е дефинирана като уникална, два записа се вмъкват в страничната таблица за проследяване на промените: един запис за всяко от разделените действия – Вмъкване и Изтриване.

Когато функцията CHANGETABLE се извика за изброяване на промените, тези записи се сортират по стойности на първичния ключ и след това операциите се агрегират. Ако актуализацията вмъква по-ниска стойност, първо се изпълнява операция "I" на страничната таблица, последвана от операция "D". Това води до връщане на неправилна операция за този ред. Това е така, защото "I", последвано от "D", е агрегирано като "D".

Тъй като в страничните таблици се поддържат само стойностите на първичния ключ, не е необходимо да има два отделни записа. Това е вярно, докато колоната за първичен ключ не е актуализирана.

Този проблем е коригиран за неключови уникални колони. В този случай, когато се появи актуализацията, се вмъква само един ред чрез "U" като операция за актуализиране вместо два записа, които имат "D" и "I".

Препратки

Научете повече за терминологията , която Microsoft използва за описване на актуализациите на софтуера.

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.