Симптоми
След като приложите SQL Server 2016 Service Pack 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 Change Tracking autocleanup failed on side table of "table_name". If the failure persists, use sp_flush_CT_internal_table_on_demand to clean up expired records from its side table.
След като се натъкнете на тази грешка, проследяването на проследяването на автоматичното почистване не може да изчиства записите от таблицата отстрани или таблицата 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 2016 SP3 или SQL Server 2017 CU26. Microsoft активно проучва този проблем и ще актуализира тази статия с повече информация и допълнителни указания, когато тази информация е налична.
Състояние
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".
Препратки
Научете повече за терминологията, която Microsoft използва, за да опише софтуерните актуализации.