KB4538365 - CORREÇÃO: Controle de Alterações limpeza não funciona quando a limpeza inválida e a versão de limpeza reforçada são negativas no SQL Server 2017 e 2019

Aplica-se a
SQL Server 2017 on Windows SQL Server 2019 on Windows

Sintomas

Suponha que você habilite o Controle de Alterações para uma ou mais tabelas no Microsoft SQL Server 2017 ou 2019 e tenha definido AUTO_CLEANUP = ON. Você observa que nenhuma linha é excluída ou limpa das tabelas laterais ou da tabela do sistema sys.syscommittab, mesmo após o período de retenção. Além disso, você observa os seguintes sintomas:

  1. Se você se conectar usando a Conexão de Administração Dedicada e consultar a versão de limpeza inválida e de limpeza reforçada, elas serão negativas:
    select * from sys.sysobjvalues where valclass = 7 and objid = 1003 - invalid
    select * from sys.sysobjValues where valclass = 7 and objid = 1004 -- Hardened

  2. Se você executar o seguinte SP para limpar sys.syscommittab manualmente, ele não fará a limpeza e retornará a versão de limpeza fortalecida como negativa:
    exec sp_flush_commit_table_on_demand
    Saída
    O valor retornado por change_tracking_hardened_cleanup_version() é -nnnnnn.

  3. Se você coletar uma sessão de evento estendido com evento - change_tracking_cleanup durante a limpeza automática de controle de alterações, notará que o CleanupStatusChange está definido como 32 (erro) e o trabalho de limpeza existe:

    Capture.PNG

Status

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Resolução

Esse problema é corrigido nas seguintes atualizações cumulativas para o SQL Server:

Sobre atualizações cumulativas para o SQL Server:

Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para o SQL Server:

Observação Para resolver esse problema, você precisa habilitar o sinalizador de rastreamento 8290 e deixar o processo de limpeza automática ser executado. Depois que esse sinalizador de rastreamento for habilitado, o processo de limpeza automática de controle de alterações redefinirá a versão de limpeza inválida para a versão de limpeza com base no período de retenção. Esse sinalizador de rastreamento pode ser habilitado no nível da sessão ou no nível da inicialização. Para entender a causa raiz do motivo pelo qual a versão de limpeza se tornou negativa, é recomendável ligar para o suporte e fornecer mais detalhes.

Referências

Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.