Symptômes
Par défaut, les points de contrôle indirects sont activés pour la base de données tempdb dans Microsoft SQL Server 2016 et 2017. Dans des conditions de charge de travail intensive, une erreur « Planificateur sans rendement » peut se produire et la sys.dm_os_spinlock_stats DMV affiche une contention de verrouillage tournant élevée pour le type de verrouillage tournant DP_LIST.
Résolution
Ce correctif est inclus dans les mises à jour et le Service Pack suivants :
-
Mise à jour cumulative 5 pour SQL Server Service Pack 1 2016
-
Mise à jour cumulative 8 pour SQL Server 2016
Informations sur le Service Pack pour SQL Server 2016
À propos des builds SQL Server
Chaque nouvelle build pour SQL Server contient tous les correctifs logiciels et correctifs de sécurité qui se trouvaient dans la build précédente. Nous vous recommandons d’installer les dernières mises à jour cumulatives pour SQL Server :
Les Service Packs sont cumulatifs. Chaque nouvelle version contient tous les correctifs fournis dans les Service Packs précédents et tous les nouveaux correctifs. Nous vous recommandons d’appliquer le dernier Service Pack et la dernière mise à jour cumulative pour ce Service Pack. Il n'est donc pas nécessaire d'installer la version antérieure d'un Service Pack avant d'installer la dernière version disponible. Utilisez le tableau 1 de l’article suivant pour obtenir plus d’informations sur le dernier Service Pack et la dernière mise à jour cumulative.
Solution de contournement
Pour contourner ce problème, désactivez les points de contrôle indirects sur la base de données tempdb à l’aide de l’une des instructions DDL (Data Definition Language) suivantes.
Cette opération doit être effectuée comme suit :
-
Sur la base de données modeldb (cela modifie également la valeur par défaut pour les nouvelles bases de données), exécutez l’instruction suivante :
ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES -
Ou, directement sur la base de données tempdb chaque fois que le instance démarre à l’aide de la SQL Server Agent à l’aide de l’instruction suivante :
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES -
Vous pouvez également émettre régulièrement des points de contrôle manuels sur la base de données tempdb à l’aide de l’instruction suivante :
use tempdb
go checkpoint
go
En outre, TF 3468 peut être utilisé pour désactiver le point de contrôle indirect sur tempdb.
État
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Références
Découvrez la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles. Pour obtenir plus d'informations, consultez les articles suivants :