KB5007039 - ИСПРАВЛЕНО: при попытке очистки отслеживания изменений отображаются сообщения об ошибке 8114 или 22122

Применяется к
SQL Server 2016 SQL Server 2017 on Linux SQL Server 2017 on Windows SQL Server 2016 Service Pack 3 - duplicate (do not use)

Проблема

После применения SQL Server 2016 с пакетом обновления 3 (SP3) или SQL Server 2017 с накопительным пакетом обновления 26 (CU26) и выполнения хранимой процедуры очистки с отслеживанием изменений sp_flush_commit_table_on_demand или sp_flush_CT_internal_table_on_demand либо при запуске автоматической очистки отображается следующее сообщение об ошибке:

Примечание

  • Msg 8114, Level 16, State 1, Procedure sp_add_ct_history, Line LineNumber
  • Error converting data type numeric to int.

Кроме того, в журнале ошибок SQL Server могут регистрироваться следующие ошибки:

Примечание

  • DateTime spidNum     Error: 22122, Severity: 16, State: 1.
  • DateTime spidNum Отслеживание изменений сбой автоочистки в боковой таблице "table_name". Если сбой сохраняется, используйте sp_flush_CT_internal_table_on_demand для удаления записей с истекшим сроком действия в боковой таблице.

После возникновения этой ошибки автоматическая очистка отслеживания изменений не может очистить записи из боковой таблицы или таблицы syscommittab.

Причина

В SQL Server 2016 SP3 и SQL Server 2017 CU26 представлена новая таблица DBO. MSchange_tracking_history и новую хранимую процедуру sys.sp_add_ct_history для записи журнала очистки отслеживания изменений. В этой таблице есть столбец cleanup_version, объявленный как тип данных INT. В хранимой процедуре sys.sp_add_ct_history есть параметр @cleanup_version, который также объявлен как INT. В загруженной системе, использующей отслеживание изменений, версия очистки может пересекать диапазон INT за заданный интервал. Затем, когда выполняется очистка отслеживания изменений, оно попытается вставить значение BIGINT в столбец INT этой таблицы. Это приводит к ошибке, которая описана в разделе "Симптомы".

Решение

Эта проблема устранена в следующих накопительных обновлениях для SQL Server:

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

Сведения о накопительных обновлениях для SQL Server:

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

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

Сведения об исправлениях по запросу:

Эта проблема устранена в следующем исправлении по запросу для SQL Server:

Временное решение

Если вы столкнулись с этой проблемой, отмените изменения до предыдущей сборки, удалив SQL Server 2016 SP3 или SQL Server 2017 CU26. Корпорация Майкрософт активно изучает эту проблему и обновит эту статью, как только эта информация станет доступна.

Состояние

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

Ссылки

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