Проблема
После применения 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, перечисленных в разделе «Относится к».
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.