Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Ознаки

Під час запуску оновлення в таблиці, яка має кластерний або унікальний індекс і оновлення відбувається на не основний унікальний стовпець, відстеження змін запис не узгоджено з оновлення інструкції.

Наприклад, припустімо, що стовпець з іменем "стовпець1" додається до звичайного або унікального індексу. Якщо значення стовпця змінюється з більшого на менше (наприклад, змінення значення з 20 на 16), перед операцією видалення функція відстеження змін отримує операцію вставлення. Наприклад, операція вставлення запису рядка в журнал транзакцій отримується перед операцією видалення рядка, або "I" вставляється перед "D".

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1116

19

Я

NULL

NULL

5639485628

1116

20

D

NULL

NULL

5639485628


Коли значення стовпця змінюється з меншого на більше (наприклад, змінення значення з 16 на 20), "D" вставляється перед "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

Я

NULL

NULL

5639485628

Причина

Ця проблема виникає через неправильне впорядкування між парами видалення та вставлення в бічній таблиці відстеження змін.

Спосіб вирішення

Виправлення цієї проблеми включено в такі оновлення для SQL Server:

         Сукупний пакет оновлень 8 для SQL Server 2017

         Сукупне оновлення 9 для пакета оновлень 1 SQL Server 2016

Сукупний пакет оновлень 12 для SQL Server 2014 з пакетом оновлень 2 (SP2)

Про збірки SQL Server

Кожна нова збірка для SQL Server містить усі виправлення та виправлення системи безпеки, які були в попередній збірці. Радимо інсталювати найновішу збірку для SQL Server:

Останнє сукупне оновлення для SQL Server 2017 р.

найновіша збірка для SQL Server 2016 р.

Останнє сукупне оновлення для SQL Server 2014 р.

Стан

Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "Стосується".

Додаткова інформація

У таблиці з підтримкою відстеження змін, коли оновлення відбувається в невід'ємному стовпці, визначеному як унікальний, два записи вставляються в бічну таблицю відстеження змін: по одному запису для кожної з розділених дій, Вставлення та Видалення.

Коли функція CHANGETABLE викликається для перелічення змін, ці записи сортуються за значеннями первинного ключа, а потім агрегуються операції. Якщо оновлення вставляє менше значення, спочатку на бічній таблиці виконується операція "I", а потім операція "D". Це призводить до неправильної операції, що повертається для цього рядка. Це відбувається тому, що "I" після "D" агрегується як "D".

Оскільки в бічних таблицях зберігаються лише значення первинного ключа, не потрібно мати два окремі записи. Це відбувається, якщо стовпець первинного ключа не оновлюється.

Цю проблему вирішено для не основних унікальних стовпців. У цьому випадку, коли відбувається оновлення, лише один рядок вставляється, маючи "U" як операцію оновлення замість двох записів, які мають "D" і "I".

Посилання

Дізнайтеся про термінологію , яка використовується корпорацією Майкрософт для опису оновлень програмного забезпечення.

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×