Sintomas
Após aplicar o SQL Server 2016 Service Pack 3 (SP3) ou o SQL Server Cumulative Update 26 (CU26) do SQL Server 2017 e executar um procedimento de limpeza armazenada do seguimento de alterações, sp_flush_commit_table_on_demand ou sp_flush_CT_internal_table_on_demandou se a limpeza automática do seguimento de alterações for executada, receberá a seguinte mensagem de erro:
Msg 8114, Level 16, State 1, Procedure sp_add_ct_history, Line LineNumber
Error converting data type numeric to int.
Além disso, é possível que a sessão dos seguintes erros seja SQL Server registo de erros:
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.
Após encontrar este erro, a limpeza automática do controlo de alterações não consegue limpar entradas da tabela lateral ou da tabela syscommittab.
Causa
SQL Server 2016 SP3 e SQL Server 2017 CU26 introduziram uma nova tabela, dbo. MSchange_tracking_historye um novo procedimento armazenado, o sys.sp_add_ct_history, para registar o histórico da limpeza do registo de alterações. Esta tabela tem uma coluna, cleanup_version, atualmente declarada como tipoddados INT. O sys.sp_add_ct_history procedimento armazenado tem um parâmetro, @cleanup_version, que também é declarado como INT. Num sistema ocupado que utiliza o controlo de alterações, a versão de limpeza pode cruzar um intervalo de INT num determinado intervalo. Em seguida, quando a limpeza do rastreio de alterações for executada, tentará inserir um valor BIGINT na coluna INT desta tabela. Esta ação gera o erro descrito na secção "Sintomas".
Resolução
Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:
Atualização Cumulativa 27 para SQL Server 2017
Cada nova atualização cumulativa para o SQL Server contém todas as correções de segurança incluídas na atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Informações de hotfix a pedido:
Este problema foi corrigido na seguinte hotfix a pedido para SQL Server:
Solução
Se encontrar este problema, reverta para a comtrução anterior ao desintalar o SQL Server 2016 SP3 ou o SQL Server 2017 CU26. A Microsoft está a investigar ativamente este problema e atualizará este artigo com mais informações e orientações adicionais quando essa informação estiver disponível.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever atualizações de software.