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 importante, une erreur de « planificateur non productif » peut se produire et la DMV sys.dm_os_spinlock_stats 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 1 pour SQL Server 2017
- Mise à jour cumulative 5 pour SQL Server 2016 Service Pack 1
- Mise à jour cumulative 8 pour SQL Server 2016
Informations sur les Service Packs pour SQL Server 2016
Service Pack 2 pour SQL Server 2016
À propos des builds de SQL Server
Chaque nouvelle build de SQL Server contient tous les correctifs logiciels et correctifs de sécurité qui se trouvaient dans la version précédente. Nous vous recommandons d’installer les dernières mises à jour cumulatives pour SQL Server :
Dernière mise à jour cumulative pour SQL Server 2017
Dernière build pour SQL Server 2016
À propos des Service Packs 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. Il est recommandé 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. Consultez le tableau 1 de l’article suivant pour trouver 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 d’une des instructions DDL (Data Definition Language) suivantes.
Cette opération doit être effectuée de la manière suivante :
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 MINUTESOu, directement sur la base de données tempdb chaque fois que l’instance démarre à l’aide de l’SQL Server Agent à l’aide de l’instruction suivante :
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTESVous pouvez également émettre régulièrement des points de contrôle manuels sur la base de données tempdb en utilisant l’instruction suivante :
use tempdb
go checkpoint
go
De plus, TF 3468 peut être utilisé pour désactiver un point de contrôle indirect sur tempdb.
É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éférences
En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles. Pour plus d’informations, consultez les articles suivants :