Symptômes
Supposons que vous utilisez Microsoft SQL Server 2016 et 2017. Si vous activez le xml_deadlock_report d’événements pour collecter des données pour les interblocages, de nombreux événements xml_deadlock_report sont signalés pour une seule occurrence d’interblocage intra-requête.
Solution de contournement
Pour contourner ce problème, vous pouvez collecter le error_reported XEvent en utilisant un filtre error_number = 1205 au lieu de xml_deadlock_report, comme dans l’exemple suivant :
Remarque
- CRÉER UNE SESSION D’ÉVÉNEMENT [Deadlock_Collection] SUR LE SERVEUR
- AJOUTER UN ÉVÉNEMENT sqlserver.error_reported(
- WHERE ([error_number]=(1205)))
- ADD TARGET package0.histogram(SET filtering_event_name=N’sqlserver.lock_acquired',source=N’sqlserver.query_hash')
- AVEC (MAX_MEMORY=4096 KO,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDES,MAX_EVENT_SIZE=0 KO,MEMORY_PARTITION_MODE=AUCUN,TRACK_CAUSALITY=ON,STARTUP_STATE=OFF)
- GO
Résolution
Ce problème est résolu dans les mises à jour cumulatives suivantes pour SQL Server :
Mise à jour cumulative 10 pour SQL Server 2017
Mise à jour cumulative 2 pour SQL Server 2016 SP2
Remarque : Avec ce correctif, aucun événement xml_deadlock_report n’est signalé pour l’interblocage intra-requête lorsque l’interblocage peut être résolu sans arrêter un thread.
À 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 :
Dernière mise à jour cumulative pour SQL Server 2017
Dernière mise à jour cumulative pour SQL Server 2016
É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.