KB4538365 - CORRECTIF : le nettoyage de Change Tracking ne fonctionne pas lorsque le nettoyage non valide et la version de nettoyage renforcé sont négatifs en SQL Server 2017 et 2019

S’applique à
SQL Server 2017 on Windows SQL Server 2019 on Windows

Symptômes

Supposons que vous activez le Change Tracking pour une ou plusieurs tables dans Microsoft SQL Server 2017 ou 2019 et que vous avez défini AUTO_CLEANUP = ON. Vous remarquez qu’aucune ligne n’est supprimée ou nettoyée des tables latérales ou de la table système sys.syscommittab, même après la période de rétention. En outre, vous remarquez les symptômes suivants :

  1. Si vous vous connectez à l’aide de la connexion d’Administration dédiée et interrogez la version de nettoyage non valide et de nettoyage renforcé, vous trouverez négative :
    select * from sys.sysobjValues where ValClass = 7 and objid = 1003 -- Invalid
    select * from sys.sysobjValues where valclass = 7 and objid = 1004 -- Hardened

  2. Si vous exécutez le SP suivant pour propre manuellement sys.syscommittab, il n’effectuera pas le nettoyage et renverra la version de nettoyage renforcée comme négative :
    sp_flush_commit_table_on_demand d’exécution
    Sortie
    La valeur renvoyée par change_tracking_hardened_cleanup_version() est -nnnnn.

  3. Si vous collectez une session d’événement étendue avec événement - change_tracking_cleanup pendant le nettoyage automatique du suivi des modifications, vous remarquerez que CleanupStatusChange est défini sur 32 (erreur) et que le travail de nettoyage existe :

    Capture.PNG

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Résolution

Ce problème est résolu dans les mises à jour cumulatives suivantes pour SQL Server :

À propos des mises à jour cumulatives pour SQL Server :

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :

Remarque Pour résoudre ce problème, vous devez activer l’indicateur de trace 8290 et laisser le processus de nettoyage automatique s’exécuter. Une fois cet indicateur de trace activé, le processus de nettoyage automatique du suivi des modifications réinitialise la version de nettoyage non valide en version de nettoyage en fonction de la période de rétention. Cet indicateur de trace peut être activé au niveau de la session ou au démarrage. Afin de comprendre la cause première de la raison pour laquelle la version de nettoyage est devenue négative, il est recommandé d’appeler le support et de fournir plus de détails.

Références

En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.