Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Comment détecter les deadlocks / Interblocages sous SQL Server 2008 et + après qu’ils se soient produit ?

Pourquoi cette version de SQL Server ? Parce qu'elle voit arriver une nouvelle fonctionnalité appelé XEvents. C'est une fonctionnalité très avancée qui à terme remplacera le système de Trace de SQL Server (SQLtrace utilisé par le Profiler).

Ce composant à l'avantage d'être léger et d'avoir un faible impact sur le moteur de base de données. Et c'est d'ailleurs pourquoi Microsoft a activé par défaut une session XEvents sur toutes les instances SQL Server 2008 et +. Cette session est connu sous le nom de system_health :

SELECT name FROM sys.dm_xe_sessions

Et les évènements qui y sont trace sont les suivant :

  • Toutes les erreurs de sévérité supérieure ou égale à 20 (erreurs critiques)
  • Toutes les erreurs relatives à la mémoire
  • Problème de processus ne cédant pas son tour (non yielding scheduler)
  • Interblocages / Deadlocks
  • Attente sur un latch pour plus de 15 secondes
  • Attente sur un verrou (lock) pour plus de 30 secondes
  • Attentes significatives sur d'autres types

Avec l'avantage pour la plupart de ces évènements de tracer la/les commande(s) SQL impliquée(s) et la pile d'appel le cas échéant.

Pour consulter le contenu du trace, c'est facile, utilisez la requête suivante :

SELECT CAST(xet.target_data as xml) AS xe_content

FROM sys.dm_xe_session_targets AS xet

    JOIN sys.dm_xe_sessions AS xes ON xes.address = xet.event_session_address

WHERE xes.name = 'system_health'

Si vous êtes intéressé spécifiquement par les deadlocks, vous n'avez plus qu'à utiliser la requête XQuery ci-dessous :

'/RingBufferTarget/event [@name="xml_deadlock_report"]'

Et le tour et joué…

Le buffer qui contient le trace est vidé en fonction de son usage, donc si votre serveur est très sujet à des erreurs critiques et des deadlocks les infos seront peut-être non présente.

Bon diagnostique…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié lundi 9 mai 2011 09:30 par christian

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01