Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Проблемы

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

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

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) перед "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

Я

NULL

NULL

5639485628

Причина

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

Решение

Исправление этой проблемы включено в следующие обновления для SQL Server:

         Накопительный пакет обновления 8 для SQL Server 2017

         Накопительный пакет обновления 9 для SQL Server 2016 с пакетом обновления 1 (SP1)

Накопительный пакет обновления 12 для SQL Server 2014 с пакетом обновления 2 (SP2)

Сведения SQL Server сборках

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

Последнее накопительное обновление для SQL Server 2017

последняя сборка SQL Server 2016

Последнее накопительное обновление для SQL Server 2014 г.

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

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

Для таблицы с поддержкой отслеживания изменений при обновлении не основного столбца, который определен как уникальный, в боковую таблицу отслеживания изменений вставляются две записи: по одной записи для каждого из разделенных действий— "Вставка" и "Удалить".

При вызове функции CHANGETABLE для перечисления изменений эти записи сортируются по значениям первичного ключа, а затем операции агрегируются. Если обновление вставляет меньшее значение, сначала выполняется операция "I" в боковой таблице, за которой следует операция "D". В результате возвращается неправильная операция для этой строки. Это связано с тем, что строка "I" после "D" агрегирована как "D".

Так как в параллельных таблицах хранятся только значения первичного ключа, не обязательно иметь две отдельные записи. Это верно, если столбец первичного ключа не обновляется.

Эта проблема устранена для не первичных уникальных столбцов. В этом случае при обновлении вставляется только одна строка с буквой "U" в качестве операции обновления вместо двух записей с символами "D" и "I".

Ссылки

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

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×