Partage maintenant:
Table des Matières cacher

1. Introduction

1.1 Qu'est-ce que SQL Server Moniteur d'activité ?

SQL Server Le Moniteur d'activité est un outil de diagnostic intégréostoutil ic au sein SQL Server Studio de gestion qui affiche des informations sur SQL Server Les processus et leur impact sur les performances du serveur. Cela vous permet de suivre SQL Server Gérez les processus, surveillez les temps d'attente des ressources, analysez les requêtes coûteuses et observez les modèles d'E/S, le tout depuis une interface unique.

SQL Server Moniteur d'activité

1.2 Pourquoi utiliser SQL Server Moniteur d'activité ?

Le Moniteur d'activité constitue votre première ligne de défense pour résoudre les problèmes de performances. Il offre une visibilité immédiate sur ce qui se passe sur votre ordinateur. SQL Server instance sans nécessiter de requêtes T-SQL complexes ni d'outils tiers.

Cet outil excelle dans l'identification rapide des problèmes courants tels que les sessions bloquées, les requêtes gourmandes en ressources processeur, les exécutions excessives de requêtes et les goulots d'étranglement d'E/S. Lorsqu'un utilisateur signale qu'une application est lente ou ne répond pas, le Moniteur d'activité vous aide à déterminer si le serveur de base de données est en cause.

Pour les administrateurs de bases de données qui ne travaillent pas avec SQL Server Au quotidien, le Moniteur d'activité offre un point d'accès accessible pour comprendre l'activité du serveur. Même les administrateurs de bases de données expérimentés l'utilisent comme outil principal.tarpoint de départ pour les enquêtes de performance.

1.3 Moniteur d'activité vs autres outils de surveillance

Bien que le Moniteur d'activité soit utile, il est important de comprendre comment il se compare aux autres options de surveillance :

Moniteur d'activité vs sp_WhoIsActive : Le Moniteur d'activité propose une interface graphique à plusieurs volets, tandis que sp_WhoIsActive est une procédure stockée complète qui fournit des informations plus détaillées dans un seul ensemble de résultats. sp_WhoIsActive affiche les types d'attente spécifiques que le Moniteur d'activité regroupe et fournit des informations de blocage plus précises.

Moniteur d'activité vs sp_who2 : La commande traditionnelle sp_who2 affiche des informations de session de base, mais le Moniteur d'activité va plus loin en affichant les statistiques d'attente, les requêtes coûteuses et les métriques d'E/S dans un format visuel et organisé.

Moniteur d'activité vs outils tiers : Les solutions de surveillance commerciales comme SolarWinds Database Performance Analyzer offrent un suivi historique, des alertes et des analyses avancées dont Activity Monitor est dépourvu. Cependant, Activity Monitor ne nécessite aucun coût supplémentaire.ost ou l'installation.

1.4 Principaux avantages pour les administrateurs de bases de données

Le Moniteur d'activité offre plusieurs avantages qui en font un outil essentiel pour les administrateurs de bases de données :

  • Zéro Cost: En tant que intégré SQL Server La fonctionnalité Management Studio ne nécessite aucun frais de licence ni effort de déploiement.
  • Surveillance en temps réel: Visualisez l'activité du serveur en temps réel, avec des intervalles d'actualisation configurables de 1 seconde à 1 heure.
  • Actions intégrées : Faites un clic droit sur les processus pour interrompre les sessions, afficher les détails des requêtes ou lancer SQL Server Traces du profileur — toutes issues de l’outil.
  • Perspectives multiples : Visualisez l'état de santé de votre serveur sous différents angles grâce à cinq panneaux spécialisés, chacun se concentrant sur des aspects spécifiques des performances.
  • Dépannage rapide : Identifier le most Résoudre les problèmes de performance courants en quelques minutes, accélérant ainsi votre temps moyen de résolution.
  • Faible barrière à l’entrée : Aucune connaissance avancée n'est requise pour commencer à utiliser efficacement l'outil, bien que des connaissances plus approfondies soient nécessaires. SQL Server L'expertise facilite l'interprétation.

2. Obtenir Starconnecté avec Moniteur d'activité

Avant de pouvoir utiliser efficacement le Moniteur d'activité, vous devez comprendre les prérequis, les autorisations requises et les différentes méthodes de lancement de l'outil.

2.1 Prérequis et configuration système requise

Utiliser SQL Server Moniteur d'activité, vous en avez besoin SQL Server Management Studio (SSMS) est installé sur votre machine locale ou sur un serveur de rebond. L'outil Moniteur d'activité a été considérablement repensé dans SQL Server 2008, donc les informations contenues dans ce guide s'appliquent à SQL Server Versions 2008 et ultérieures.

Vous devez disposer d'une connexion réseau pour accéder au SQL Server instance que vous souhaitez surveiller. Pour cloud-hostPour accéder aux bases de données ed, vous aurez généralement besoin d'une connexion VPN ou de règles de pare-feu correctement configurées.

Moniteur d'activité fonctionne avec toutes les éditions de SQL ServerIl existe trois versions, notamment Express, Standard et Enterprise. L'outil s'exécute sur votre poste client au sein de SSMS ; les ressources du serveur ne sont donc impactées que par les requêtes de surveillance qu'il exécute.

2.2 Autorisations requises

Des autorisations appropriées sont indispensables au bon fonctionnement du Moniteur d'activité. Sans les droits nécessaires, l'écran risque de rester vide ou de recevoir des messages d'erreur « Accès refusé ».

2.2.1 Autorisation d'affichage de l'état du serveur

Le AFFICHER L'ÉTAT DU SERVEUR L'autorisation est la principale condition requise pour utiliser le Moniteur d'activité. Cette autorisation au niveau du serveur vous permet de visualiser tous les processus actifs et leurs indicateurs associés.

Pour accorder cette autorisation, un administrateur de serveur peut exécuter la commande suivante :

GRANT VIEW SERVER STATE TO [YourLoginName];

Sans l'option VIEW SERVER STATE, le Moniteur d'activité peut s'ouvrir mais n'afficher aucune donnée dans aucun de ses volets.

2.2.2 Autorisations au niveau de la base de données

Pour afficher les informations du volet E/S de fichiers de données, vous devez disposer d'autorisations supplémentaires. Plus précisément, vous devez posséder l'une des combinaisons suivantes :

  • CRÉER UNE BASE DE DONNÉES autorisation, ou
  • MODIFIER N'IMPORTE QUELLE BASE DE DONNÉES autorisation, ou
  • AFFICHER N'IMPORTE QUELLE DÉFINITION autorisation

Ces autorisations doivent être combinées avec AFFICHER L'ÉTAT DU SERVEUR pour une fonctionnalité complète du Moniteur d'activité.

2.2.3 Dépannage des autorisations

Si le Moniteur d'activité s'ouvre mais n'affiche aucune donnée, les autorisations sont en cause.ost Cause fréquente. Vérifiez que votre compte dispose de l'autorisation VIEW SERVER STATE au niveau du serveur. Vous pouvez vérifier vos autorisations en exécutant :

SELECT * FROM fn_my_permissions(NULL, 'SERVER');

Recherchez « VIEW SERVER STATE » dans la colonne permission_name. Si cette autorisation est absente, contactez votre administrateur de base de données pour l'obtenir.

2.3 Comment ouvrir le Moniteur d'activité dans SSMS

SQL Server Management Studio propose quatre méthodes différentes pour lancer le Moniteur d'activité, vous offrant ainsi une flexibilité en fonction de vos préférences de flux de travail.

2.3.1 Méthode 1 : À partir de la barre d’outils

Le moyen le plus rapide d'ouvrir le Moniteur d'activité est d'utiliser l'icône de la barre d'outils :

  1. Connectez-vous à votre SQL Server exemple dans SQL Server Atelier de gestion.
  2. Repérez l'icône Moniteur d'activité dans la barre d'outils standard (elle ressemble à un graphique à barres avec un bouton de lecture vert).
  3. Cliquez sur l'icône pour lancer le Moniteur d'activité.

Start SQL Server Moniteur d'activité à partir de l'icône de la barre d'outils dans SQL Server Atelier de gestion.

Cette méthode est la plus rapide lorsque vous travaillez déjà dans SSMS et que vous avez besoin de vérifier rapidement l'activité du serveur.

2.3.2 Méthode 2 : À partir de l’explorateur d’objets

Vous pouvez également lancer le Moniteur d'activité directement depuis l'Explorateur d'objets :

  1. Dans l'Explorateur d'objets, localisez le SQL Server instance que vous souhaitez surveiller.
  2. Faites un clic droit sur le nom de l'instance.
  3. Choisir Moniteur d'activité dans le menu contextuel.

Start SQL Server Moniteur d'activité en cliquant avec le bouton droit sur l'instance dans l'Explorateur d'objets SQL Server Atelier de gestion.

Cette méthode est utile lors de la connexion à plusieurs serveurs, car elle garantit que vous surveillez la bonne instance.

2.3.3 Méthode 3 : Utilisation d’un raccourci clavier

Pour les utilisateurs privilégiant le clavier, SQL Server Management Studio propose un raccourci dédié :

  1. Assurez-vous que SSMS est la fenêtre active et que vous êtes connecté à une instance.
  2. Presse Ctrl + Alt + A.
  3. Le Moniteur d'activité s'ouvrira pour l'instance actuellement sélectionnée dans l'Explorateur d'objets.

Notez que le Moniteur d'activité se connectera à l'instance de serveur que vous avez sélectionnée dans l'Explorateur d'objets. Assurez-vous donc d'avoir sélectionné la bonne instance avant d'utiliser ce raccourci.

2.3.4 Méthode 4 : À partir du menu Options (StarConfiguration du tup)

Si vous utilisez fréquemment le Moniteur d'activité, vous pouvez configurer SSMS pour qu'il le lance automatiquement chaque fois que vous…tardans l'application :

  1. In SQL Server Management Studio, accédez à Outils -> Options.
  2. Dans la boîte de dialogue Options, développez Environnement, Puis sélectionnez Démarrage.
  3. Extrait du à startube liste déroulante, sélectionnez Ouvrez l'explorateur d'objets et le moniteur d'activité.
  4. Choisir OK.

Réglez le starconfiguration de tup pour SQL Server Moniteur d'activité dans SQL Server Atelier de gestion.

La prochaine fois que vous lancerez SSMS et vous connecterez à un serveur, le Moniteur d'activité s'ouvrira automatiquement en même temps que l'Explorateur d'objets.

3. Comprendre les volets du Moniteur d'activité

Le Moniteur d'activité organise les informations en cinq volets extensibles, chacun offrant une perspective différente sur l'activité du serveur. Comprendre le contenu de chaque volet est essentiel pour un dépannage efficace.

3.1 Volet Vue d'ensemble

Le volet Vue d'ensemble présente quatre graphiques en temps réel qui vous donnent un aperçu rapide de l'état de santé de votre SQL Server Par exemple, ces graphiques se mettent à jour à un intervalle configurable et vous aident à identifier d'un coup d'œil les schémas anormaux.

Le volet Vue d'ensemble dans SQL Server Moniteur d'activité.

3.1.1 % Temps processeur

Ce graphique montre le pourcentage de temps que le processeur consacre à l'exécution de threads non inactifs. SQL Server instance sur tous les processeurs. La valeur représente SQL ServerL'utilisation du processeur de l'appareil, et non l'utilisation totale du processeur du serveur.

Si le temps processeur atteint ou approche constamment 100 %, votre serveur est limité par le processeur. Cela peut indiquer des requêtes inefficaces, des index manquants ou une capacité matérielle insuffisante. Utilisez le volet « Requêtes coûteuses récentes » pour identifier les requêtes qui consomment le plus de ressources.ost CPU.

3.1.2 Tâches en attente

Cette métrique indique le nombre de tâches en attente de ressources pour pouvoir s'exécuter. Ces ressources peuvent être disponibles pour le processeur, les E/S, la mémoire ou des verrous.

Un nombre constamment élevé de tâches en attente indique une contention des ressources. Le volet « Attentes des ressources » fournit des informations plus détaillées sur les types de ressources à l’origine des attentes.

3.1.3 E/S de la base de données (Mo/s)

Ce graphique illustre le débit de transfert de données entre la mémoire et le disque. Il combine les lectures et les écritures, mesuré en mégaoctets par seconde.

Des pics d'activité d'E/S de base de données peuvent indiquer des requêtes effectuant des analyses de tables volumineuses, une activité de journalisation excessive ou des opérations de point de contrôle. Le volet E/S des fichiers de données détaille l'activité d'E/S par base de données et par fichier.

3.1.4 Requêtes par lot/s

Cette mesure représente le nombre de SQL Server Nombre de lots reçus par l'instance par seconde. Un lot peut être une seule instruction ou plusieurs instructions soumises simultanément.

Cette valeur vous donne une indication de l'activité globale du serveur. Des baisses soudaines du nombre de requêtes par lots pendant les heures ouvrables peuvent indiquer des problèmes de connectivité de l'application ou des problèmes rencontrés par les utilisateurs.

3.1.5 Définition des intervalles d'actualisation

Vous pouvez personnaliser la fréquence à laquelle le Moniteur d'activité met à jour ses données :

  1. Cliquez avec le bouton droit n'importe où dans le volet Vue d'ensemble.
  2. Choisir Intervalle de rafraîchissement.
  3. Choisissez un intervalle parmi les valeurs prédéfinies : 1 seconde, 5 secondes, 10 secondes (par défaut), 30 secondes, 1 minute ou 1 heure.

Définissez l'intervalle d'actualisation dans SQL Server Panneau de présentation du Moniteur d'activité.

Définir des intervalles d'actualisation inférieurs à 10 secondes augmente la charge de surveillance sur votre serveur. Pour les systèmes de production soumis à une forte charge, il est conseillé d'utiliser des intervalles de 30 secondes ou plus afin de minimiser l'impact.

3.2 Volet Processus

Le volet Processus affiche des informations sur les sessions en cours d'exécution sur votre appareil. SQL Server Par exemple, ce volet est essentiel pour identifier qui fait quoi et repérer les problèmes de blocage.

Le volet Processus dans SQL Server Moniteur d'activité.

3.2.1 Compréhension des informations relatives au processus

Chaque ligne du volet Processus représente une session active sur le serveur. Ce volet affiche les sessions de toutes les bases de données et de tous les utilisateurs, offrant ainsi une vue d'ensemble de l'activité du serveur.

Les informations affichées comprennent le nom d'utilisateur, le nom de l'application, hostLe nom, la base de données consultée et la commande en cours permettent d'associer l'activité de la base de données à des utilisateurs ou des applications spécifiques.

3.2.2 Explication des colonnes clés

Comprendre les colonnes clés vous aide à interpréter efficacement les informations relatives aux processus :

  • ID de session: Un identifiant unique pour chaque connexion. Les processus système utilisent des identifiants de session négatifs.
  • Processus utilisateur : Indique s'il s'agit d'une session utilisateur (Oui) ou d'un processus système (Non).
  • Vous devez vous identifier: Le SQL Server Identifiant ou compte Windows associé à la session.
  • Base de données: Le contexte de base de données actuel pour la session.
  • État de la tâche : Indique l'état actuel de la session (EN COURS D'EXÉCUTION, SUSPENDUE, EN VEILLE, etc.).
  • Commande: Le type de commande exécutée (SELECT, INSERT, UPDATE, etc.).
  • Application: Le nom de l'application qui a créé la connexion.
  • Temps d'attente: Depuis combien de temps (en millisecondes) la session attend-elle des ressources ?
  • Type d'attente : Le type précis de ressource que la session attend.
  • Temps processeur : Temps processeur total consommé par cette session depuis sa connexion.
  • Utilisation de la mémoire : Quantité de mémoire (en Ko) actuellement allouée à la session.

3.2.3 Processus de filtrage et de tri

Le volet Processus comprend de puissantes fonctionnalités de filtrage pour vous aider à vous concentrer sur les sessions pertinentes :

  1. Cliquez sur la flèche déroulante dans n'importe quel en-tête de colonne.
  2. Le filtre affiche les valeurs disponibles pour cette colonne, y compris Tous, Blanks, ainsi NonBlanks.
  3. Sélectionnez des valeurs spécifiques pour filtrer l'affichage et n'afficher que ces sessions.

Filtrer les processus dans SQL Server Moniteur d'activité.

Par exemple, vous pouvez filtrer État de la tâche afficher uniquement les sessions en cours ou filtrer Base de données pour visualiser l'activité relative à une base de données spécifique.

Vous pouvez également trier selon n'importe quelle colonne en cliquant sur son en-tête. Cliquez une fois pour un tri croissant, deux fois pour un tri décroissant.

Trier les processus dans SQL Server Moniteur d'activité.

3.2.4 Identification des blocages et des sessions bloquées

Le volet Processus vous aide à identifier les scénarios de blocage où une session empêche les autres de se dérouler :

  • Bloqué par : Affiche l'identifiant de la session qui bloque la session actuelle. Si cette colonne contient une valeur, la session attend un verrou détenu par une autre session.
  • Bloqueur de tête : Affiche « 1 » si cette session bloque d’autres sessions mais n’est pas elle-même bloquée. Il s’agit de la cause première d’un blocage en chaîne.

Afficher les processus bloquants et bloqués dans SQL Server Moniteur d'activité.

Pour examiner un problème de blocage, identifiez d'abord le bloqueur principal (la session marquée « 1 » dans la colonne Bloqueur principal), puis examinez ce qu'il fait et décidez s'il faut le laisser se terminer ou le terminer.

3.2.5 Actions du processus (Arrêt, Détails, Trace)

Le Moniteur d'activité vous permet d'effectuer des actions sur des sessions individuelles :

  1. Faites un clic droit sur n'importe quelle session dans le volet Processus.
  2. Vous verrez plusieurs options :
    • Détails: Affiche la dernière commande exécutée par cette session.
    • Processus d'élimination : Met fin à la session (à utiliser avec précaution).
    • Processus de traçage dans SQL Server Profileur : Lance SQL Server Profiler et filtre automatiquement pour n'afficher que l'activité de cette session.

Effectuer des actions sur les processus dans SQL Server Moniteur d'activité.

L'option Détails affiche le texte de la commande, mais notez qu'il s'agit du dernier Commande exécutée ; elle n’est peut-être plus en cours d’exécution. L’option Trace est particulièrement utile pour visualiser la séquence complète des commandes exécutées par une session.

3.3 Volet Attentes de ressources

Le volet Attentes de ressources récapitule les statistiques d'attente, indiquant les types de ressources que les sessions attendent.ost Ces informations sont fréquemment recueillies. Elles sont cruciales pour diagnostiquer les goulots d'étranglement en matière de performance.

Le volet d'attente des ressources dans SQL Server Moniteur d'activité.

3.3.1 Comprendre les statistiques d'attente

Lorsque vous SQL Server Si une ressource (verrou, temps CPU ou mémoire) ne peut être immédiatement accordée, la tâche requérante passe en état d'attente. Les statistiques d'attente permettent de suivre ces périodes et d'identifier les moments où le serveur attend au lieu de travailler.

Le volet « Attentes des ressources » collecte les données des vues de gestion dynamique du système, telles que sys.dm_os_wait_stats et sys.dm_exec_requests. À chaque intervalle d'actualisation, il calcule la différence entre l'instantané actuel et le précédent, affichant ainsi le taux d'accumulation pour chaque type d'attente.

3.3.2 Catégories d'attente

Le Moniteur d'activité regroupe des centaines de types d'attente individuels en catégories plus larges afin de simplifier l'interprétation :

  • CPU: Tâches en attente de temps processeur disponible.
  • Verrou tampon : Attentes relatives aux objets de synchronisation à court terme protégeant l'accès aux pages de données en mémoire. Cette catégorie inclut les attentes de verrouillage de page (PAGELATCH_*).
  • Lock: Attentes dues à des sessions détenant des verrous dont d'autres sessions ont besoin.
  • Mémoire: Attend l'octroi de la mémoire nécessaire aux opérations telles que le tri et le hachage.
  • E/S réseau : En attente de l'envoi ou de la réception de données en provenance des clients.
  • SQL CLR : Attentes liées à l'exécution du Common Language Runtime.

Bien que ce regroupement simplifie la vue, il masque également des détails importants. Par exemple, « Verrou de tampon » peut regrouper les attentes PAGELATCH_SH, PAGELATCH_UP et PAGELATCH_EX, qui ont des implications différentes sur les performances.

3.3.3 Interprétation du temps d'attente et des tâches d'attente

Le volet Attentes des ressources affiche deux indicateurs clés pour chaque catégorie d'attente :

  • Temps d'attente cumulé (ms) : Le nombre total de millisecondes accumulées pendant l'intervalle d'actualisation actuel pour cette catégorie d'attente.
  • Tâches en attente : Le nombre de tâches actuellement en attente de ressources dans cette catégorie.

La valeur du temps d'attente est particulièrement intéressante. Si vous avez un intervalle d'actualisation de 10 secondes et que vous constatez un temps d'attente de 20 000 ms pour une catégorie, cela indique plusieurs attentes simultanées (20 000 ms / 10 000 ms = moyenne de 2 attentes simultanées pendant l'intervalle).

3.3.4 Identification des goulots d'étranglement en matière de performance

Utilisez le volet Attentes de ressources pour identifier où votre serveur passe le plus de temps.ost temps d'attente :

  1. Développez le volet Attentes des ressources.
  2. Observez les catégories d'attente qui accumulent les temps d'attente les plus longs.
  3. Trier par Temps d'attente cumulé pour voir quelles ressources sont most contraint.

Triez par temps d'attente cumulé dans le volet Attentes des ressources pour identifier le goulot d'étranglement des performances.

Des temps d'attente élevés pour les verrous de tampon indiquent souvent une contention des pages de données en mémoire, ce qui peut suggérer des goulots d'étranglement d'E/S ou une contention de tempdb. Des temps d'attente élevés pour les verrous signalent des problèmes de blocage. Des temps d'attente élevés pour la mémoire suggèrent une allocation de mémoire insuffisante pour les opérations de requête.

3.4 Volet d'E/S de fichiers de données

Le volet E/S des fichiers de données affiche l'activité disque pour chaque fichier de base de données sur votre serveur, vous aidant ainsi à identifier les goulots d'étranglement des E/S et à comprendre les modèles d'utilisation du disque.

Le volet E/S de fichiers de données dans SQL Server Moniteur d'activité.

3.4.1 Comprendre les métriques d'E/S

Le volet E/S de fichiers de données affiche plusieurs indicateurs pour chaque fichier de base de données :

  • Base de données: Le nom de la base de données.
  • Type de fichier: Soit les données (y compris les tables et les index), soit le journal (journal des transactions).
  • Nom logique : Le nom de fichier logique tel que défini dans SQL Server.
  • Lecture en Mo/s : Le débit de lecture des données de ce fichier.
  • MB/s Écrit : Le débit de données écrites dans ce fichier.
  • Temps de réponse (ms): Temps de réponse moyen pour les opérations d'E/S sur ce fichier.

Ces indicateurs s'actualisent au même intervalle que le volet Vue d'ensemble, vous offrant une visibilité en temps réel sur l'activité du disque.

3.4.2 Identification des goulots d'étranglement des E/S

Soyez attentif aux schémas suivants qui indiquent des problèmes de performances d'E/S :

  • Temps de réponse élevé : Des temps de réponse constamment supérieurs à 15-20 ms suggèrent des sous-systèmes de disque lents. Des temps de réponse supérieurs à 50 ms indiquent de sérieux goulots d'étranglement au niveau des E/S.
  • Charge déséquilibrée : Si un fichier de données présente des taux d'E/S nettement supérieurs à ceux des autres fichiers de la même base de données, il peut être judicieux d'ajouter des fichiers supplémentaires afin de répartir la charge.
  • Activité excessive de Tempdb : Des taux d'E/S élevés sur les fichiers tempdb indiquent souvent des requêtes créant de grands ensembles de résultats intermédiaires ou utilisant des plans d'exécution inefficaces.

3.4.3 Analyse des fichiers de base de données

Utilisez le volet E/S de fichiers de données pour comprendre comment vos bases de données utilisent les ressources disque :

  1. Développez le volet E/S de fichiers de données.
  2. Trier par Lecture en Mo/s or MB/sec Écrit pour identifier le most fichiers actifs.
  3. Veuillez signaler tout fichier présentant une activité constamment élevée ou des temps de réponse longs.
  4. Comparez ces informations avec le volet « Requêtes coûteuses récentes » pour identifier les requêtes qui génèrent la charge d'E/S.

Trier par Lecture ou Écrit pour identifier le most fichiers actifs dans le volet E/S de fichiers de données.

3.5 Volet des requêtes coûteuses récentes

Le volet « Requêtes coûteuses récentes » est souvent le plus visible.ost Ce volet est précieux pour le dépannage des problèmes de performance des applications. Il affiche les requêtes qui consomment une part importante des ressources du serveur, vous aidant ainsi à identifier les opportunités d'optimisation.

Le volet des requêtes coûteuses récentes dans SQL Server Moniteur d'activité.

3.5.1 Comprendre les métriques de requêtes

Le Moniteur d'activité affiche plusieurs indicateurs pour chaque requête coûteuse :

  • Exécutions/min : Combien de fois la requête a-t-elle été exécutée au cours de la dernière minute ?
  • Processeur (ms/s) : Temps processeur consommé par seconde par cette requête.
  • Lectures physiques/s : Nombre de lectures physiques du disque par seconde pour cette requête.
  • Écritures logiques/s : Nombre d'écritures logiques (dans le cache tampon) par seconde.
  • Lectures logiques/s : Nombre de lectures logiques (à partir du cache tampon) par seconde.
  • Durée moyenne (ms) : Temps d'exécution moyen pour cette requête.
  • Nombre de forfaits : Nombre de plans d'exécution en cache pour cette requête.

Ces indicateurs vous aident à comprendre non seulement quelles requêtes sont coûteuses, mais aussi… why Ils sont chers et leur fréquence d'utilisation est un facteur important.

3.5.2 Options de tri

Vous pouvez trier le volet « Requêtes coûteuses récentes » selon différents critères pour trouver différents types de problèmes :

  1. Cliquez sur l'en-tête d'une colonne pour trier selon cette mesure.
  2. Les stratégies de tri courantes comprennent :
    • Trier par processeur : Trouver les requêtes consommant le most temps processeur.
    • Trier par exécutions/min : Identifier les requêtes qui s'exécutent excessivement souvent.
    • Trier par lectures physiques : Trouvez les requêtes à l'origine du most E/S disque.
    • Trier par durée moyenne : Localiser les requêtes de longue durée.

Lors du dépannage d'un problème de performance, essayez de trier les résultats selon plusieurs colonnes afin d'obtenir différentes perspectives. Une requête avec une utilisation modérée du processeur mais un nombre d'exécutions par minute extrêmement élevé pourrait être la véritable source du problème.

3.5.3 Affichage du texte de la requête

Pour voir la requête SQL réelle qui se cache derrière une requête coûteuse :

  1. Cliquez avec le bouton droit sur la ligne de requête dans le volet Requêtes coûteuses récentes.
  2. Choisir Modifier le texte de la requête.
    Modifier le texte de la requête dans le volet Requêtes coûteuses récentes.
  3. Une nouvelle fenêtre de requête s'ouvre, affichant l'instruction SQL complète.
    Nouvelle fenêtre de requête après avoir sélectionné « Modifier le texte de la requête » dans le volet Requêtes coûteuses récentes.

Cela vous permet d'examiner la logique de la requête et d'identifier les possibilités d'optimisation. Vous pouvez ensuite copier le texte de la requête pour tester des versions modifiées.

3.5.4 Analyse des plans d'exécution

Les plans d'exécution vous montrent comment SQL Server exécute une requête, révélant des inefficacités telles que des index manquants ou des types de jointure inappropriés :

  1. Cliquez avec le bouton droit sur la ligne de requête dans le volet Requêtes coûteuses récentes.
  2. Choisir Afficher le plan d'exécution.
    Afficher le plan d'exécution dans le volet des requêtes coûteuses récentes.
  3. SQL Server Management Studio affiche une représentation graphique de l'exécution de la requête.
    Plan d'exécution de la requête dans une nouvelle fenêtre.

Recherchez les opérations qui consomment un pourcentage important du temps de requête.ostDes avertissements concernant des statistiques ou des index manquants, ainsi que des opérations d'analyse de table inattendues, indiquent souvent les points à optimiser.

3.5.5 Identification des requêtes problématiques

Surveillez ces tendances dans le volet « Requêtes coûteuses récentes » :

  • Exécutions excessives : Une requête exécutée des milliers de fois par minute peut indiquer un problème de requête N+1, où le code de l'application appelle la base de données à l'intérieur d'une boucle.
  • Lectures physiques élevées : Les requêtes avec des taux de lecture physique élevés sollicitent fréquemment le disque, ce qui suggère des index manquants ou des requêtes mal écrites.
  • Forte consommation de ressources CPU et faible durée d'utilisation : De nombreuses requêtes rapides consommant beaucoup de ressources CPU au total peuvent avoir un impact aussi important sur les performances du serveur que quelques requêtes lentes.
  • Plusieurs forfaits disponibles : Les requêtes comportant de nombreux plans d'exécution peuvent souffrir de problèmes de détection de paramètres ou de requêtes non paramétrées entraînant un gonflement du cache de plans.

4. Utilisation du Moniteur d'activité pour le dépannage des performances

Le Moniteur d'activité révèle tout son potentiel lorsqu'il est utilisé de manière systématique pour diagnostiquer et résoudre les problèmes de performance. Cette section aborde les scénarios de dépannage courants et la manière de les résoudre.

4.1 Diagnostic des exécutions de requêtes excessives

L'un d'euxost Les problèmes de performance courants sont dus à l'exécution de requêtes beaucoup plus fréquentes que nécessaire, souvent en raison de problèmes de conception de l'application.

4.1.1 Identification des requêtes répétées

Pour repérer les requêtes qui s'exécutent trop souvent :

  1. Ouvrez le Moniteur d'activité et développez-le Requêtes coûteuses récentes vitre.
  2. Trier par Exécutions/min (exécutions par minute).
  3. Recherchez les requêtes en haut de la liste dont le nombre d'exécutions semble anormalement élevé.
  4. Cliquez avec le bouton droit sur la requête suspecte et sélectionnez Modifier le texte de la requête examiner l'instruction SQL.

Par exemple, si vous voyez une simple instruction SELECT s'exécuter 37 000 fois par minute, demandez-vous si l'application a réellement besoin d'appeler cette requête aussi fréquemment.ost Les requêtes exécutées plus de quelques milliers de fois par minute justifient une enquête.

4.1.2 Analyse des causes profondes

Les exécutions excessives de requêtes résultent généralement des problèmes suivants :

  • Problème de requête N+1 : Le code de l'application récupère une liste d'éléments, puis exécute une requête distincte pour chaque élément afin d'en extraire les données associées. Cela génère N requêtes supplémentaires, où N correspond au nombre d'éléments.
  • Mise en cache manquante : L'application interroge la base de données pour obtenir des données qui rarLes modifications sont effectuées directement au lieu d'être mises en cache dans la mémoire de l'application.
  • Boucles d'interrogation : Le code interroge la base de données de manière répétée pour vérifier les changements d'état, plutôt que d'utiliser des notifications de changement ou des files d'attente de messages.
  • Inefficacité de l'ORM : Entity Framework et les outils similaires génèrent parfois des modèles de requêtes inefficaces lorsque les développeurs ne comprennent pas comment leur code se traduit en SQL.

Pour déterminer la cause première, remontez jusqu'au code de l'application. Notez le Application et Se connecter Les colonnes du volet Processus s'affichent lors de l'exécution de la requête. Vous pouvez également cliquer avec le bouton droit sur le processus et sélectionner Processus de traçage dans SQL Server Profiler pour observer le schéma d'appel.

4.1.3 Solutions et bonnes pratiques

Une fois que vous avez identifié les exécutions de requêtes excessives, envisagez les solutions suivantes :

  • Le traitement par lots: Modifier le code de l'application pour récupérer plusieurs éléments en une seule requête en utilisant des jointures ou des clauses IN plutôt que d'exécuter des requêtes distinctes dans une boucle.
  • Mise en cache des résultats : Cache de données fréquemment consultées mais rarement modifiées dans la mémoire de l'application, avec des délais d'expiration appropriés.
  • Chargement impatient : Configurez les ORM pour utiliser des stratégies de chargement anticipé qui récupèrent les données connexes en un nombre réduit de requêtes plus efficaces.
  • Paramétrage des requêtes : Veillez à utiliser des paramètres plutôt que de concaténer des valeurs dans les requêtes, ce qui améliore la réutilisation du cache de plan et réduit la surcharge de compilation.

4.2 Investigation des problèmes de blocage

Le blocage survient lorsqu'une session détient des verrous empêchant les autres sessions de se poursuivre. Cela se traduit par des temps de réponse applicatifs lents et des utilisateurs frustrés.

4.2.1 Identification des chaînes bloquantes

Pour détecter et analyser les blocages :

  1. Ouvrez le Moniteur d'activité et développez-le Processus vitre.
  2. Recherchez les sessions avec des valeurs dans le Bloqué par colonne—ces colonnes attendent des verrous détenus par d'autres sessions.
  3. Trouvez les sessions avec « 1 » dans le Bloqueur de tête colonne—il s'agit de la cause première du blocage des chaînes.
  4. Noter la Session ID du bloqueur de tête.
  5. Cliquez avec le bouton droit sur la session de blocage de la tête et sélectionnez DÉTAILS pour voir quelle commande il exécute.

Il est essentiel de comprendre la chaîne de blocage. C'est la session bloquante principale qu'il faut examiner, et non les sessions bloquées en aval.

4.2.2 Comprendre les types de serrures

Le Type d'attente La colonne correspondante dans le volet Processus indique le type de verrou que les sessions bloquées attendent :

  • LCK_M_X : Attente de verrouillage exclusif, généralement causée par des opérations UPDATE, DELETE ou INSERT.
  • LCK_M_S : Attente de verrou partagé, généralement des instructions SELECT en attente de la libération de verrous exclusifs.
  • LCK_M_U : Attente de verrouillage de mise à jour, un type de verrou intermédiaire utilisé lors des mises à jour.
  • LCK_M_IX : Attente de verrouillage exclusif intentionnel, indiquant une contention de verrouillage au niveau de la page ou de la ligne.

Le Ressource d'attente Cette colonne indique quel objet de base de données est verrouillé, vous aidant ainsi à comprendre quelle table ou quel index est impliqué dans le conflit.

4.2.3 Résolution des problèmes bloquants

Une fois que vous avez identifié la session bloquante et son fonctionnement, plusieurs options s'offrent à vous :

  1. Attendez la fin : Si le processus bloquant exécute une requête légitime qui se terminera bientôt, il est peut-être préférable de la laisser se terminer naturellement.
  2. Mettre fin à la session : Si le processus bloquant est bloqué ou exécute une requête qui devrait être annulée :
    • Cliquez avec le bouton droit sur la session dans le volet Processus.
    • Choisir Processus de mise à mort.
    • Confirmez l'action dans la boîte de dialogue.
  3. Optimiser les requêtes : Si le blocage se répète avec les mêmes requêtes, optimisez-les pour réduire leur durée de verrouillage.
  4. Ajuster les niveaux d'isolation : Envisagez d'utiliser l'isolation READ COMMITTED SNAPSHOT pour réduire les blocages dans les charges de travail à forte intensité de lecture.
  5. Réglage de l'index : Ajoutez des index pour accélérer les requêtes et réduire la durée pendant laquelle elles conservent les verrous.

4.3 Analyse de l'utilisation élevée du processeur

Lorsque le volet Vue d'ensemble affiche un temps processeur constamment égal ou proche de 100 %, vous devez identifier les requêtes responsables et déterminer si elles peuvent être optimisées.

4.3.1 Identification des requêtes gourmandes en ressources CPU

Pour identifier les requêtes consommant une quantité excessive de ressources CPU :

  1. Ouvrez le Requêtes coûteuses récentes vitre.
  2. Trier par Processeur (ms/s) pour afficher les requêtes utilisant le most Temps CPU.
  3. Examinez les requêtes les plus fréquentes dans la liste.
  4. Cliquez avec le bouton droit sur les requêtes consommant beaucoup de ressources CPU et sélectionnez Modifier le texte de la requête pour afficher l'instruction SQL.
  5. Choisir Afficher le plan d'exécution pour comprendre comment la requête s'exécute.

Il convient de prêter attention non seulement à l'utilisation du processeur par requête individuelle, mais aussi à l'ensemble des données. Exécutions/min colonne. Une requête utilisant une quantité modérée de CPU par exécution, mais s'exécutant des milliers de fois par minute, peut représenter la plus grande consommation de CPU.

4.3.2 Techniques d'optimisation des requêtes

Les méthodes courantes pour réduire la consommation du processeur comprennent :

  • Ajouter les index manquants : Les recherches d'index consomment beaucoup moins de ressources CPU que les analyses de table. Vérifiez si des recommandations d'index sont manquantes dans les plans d'exécution.
  • Réécrire les requêtes inefficaces : Remplacez les curseurs par des opérations ensemblistes, éliminez les fonctions inutiles dans les clauses WHERE et supprimez les jointures redondantes.
  • Statistiques de mise à jour : Des statistiques obsolètes causent SQL Server Pour sélectionner des plans d'exécution inefficaces, exécutez la commande UPDATE STATISTICS sur les tables concernées.
  • Réduire le volume de données : Ajoutez des clauses WHERE pour filtrer les données plus tôt, utilisez TOP ou OFFSET/FETCH pour la pagination et évitez SELECT *.
  • Correction de la détection des paramètres : Utilisez OPTION (RECOMPILE), des indications de requête ou des guides de plan lorsque la détection des paramètres pose problème.

4.4 Investigation des problèmes de mémoire

La saturation de la mémoire peut entraîner le débordement des requêtes sur le disque, ce qui dégrade considérablement les performances. Le Moniteur d'activité vous aide à identifier les opérations gourmandes en mémoire.

4.4.1 Comprendre les indicateurs de mémoire

Le Utilisation de la mémoire La colonne correspondante dans le volet Processus affiche la mémoire allouée à chaque session en kilo-octets. Une utilisation élevée de la mémoire par une seule session indique souvent :

  • Opérations de tri ou de hachage importantes qui ne pouvaient pas tenir dans la mémoire initialement allouée
  • Requêtes renvoyant d'énormes ensembles de résultats
  • Parallélisme excessif créant de nombreuses copies des opérateurs de plan d'exécution
  • Fuites de mémoire dans les procédures stockées ou les fonctions du CLR

Le volet Attentes de ressources peut afficher des attentes de mémoire lorsque les requêtes ne peuvent pas obtenir suffisamment de mémoire et doivent attendre que la mémoire devienne disponible.

4.4.2 Identification des requêtes gourmandes en mémoire

Pour identifier les requêtes provoquant une forte consommation de mémoire :

  1. Dans l' Processus volet, trier par Utilisation de la mémoire pour voir les sessions consommant le most mémoire.
  2. Cliquez avec le bouton droit sur les sessions à forte utilisation de la mémoire et sélectionnez DÉTAILS pour consulter leurs requêtes.
  3. Dans l' Requêtes coûteuses récentes Dans le volet, recherchez les requêtes à forte valeur ajoutée. Lectures logiques or Écriture logique, car ces éléments sont souvent corrélés à l'utilisation de la mémoire.
  4. Examinez les plans d'exécution des opérateurs Sort et Hash Match, qui utilisent des allocations de mémoire.

Les requêtes affichant des avertissements « Attribution de mémoire » dans les plans d’exécution ou des avertissements de débordement indiquent des problèmes de pression sur la mémoire.

4.5 Détection des problèmes de performance des applications

Lorsque les utilisateurs signalent des temps de réponse lents des applications, le Moniteur d'activité vous aide à déterminer si la base de données constitue le goulot d'étranglement.

4.5.1 Corrélation du moniteur d'activité avec les problèmes d'application

Pour analyser la lenteur de l'application :

  1. Notez l'heure exacte à laquelle les utilisateurs signalent les problèmes et les applications concernées.
  2. Ouvrez le Moniteur d'activité et vérifiez le Vue d’ensemble panneau pour les pics de ressources à ce moment-là.
  3. Dans l' Processus volet, filtrer par Application Afficher uniquement les connexions provenant de l'application concernée.
  4. Recherchez le haut Temps d'attente valeurs, qui indiquent les délais de la base de données.
  5. Vérifiez la Requêtes coûteuses récentes volet pour les requêtes provenant de cette application qui consomment des ressources importantes.

Si la base de données ne présente aucune activité inhabituelle alors que les utilisateurs constatent des ralentissements, le problème provient probablement du code de l'application, de la latence du réseau ou des performances côté client.

4.5.2 Identification des modèles d'application inefficaces

Le Moniteur d'activité révèle plusieurs anti-modèles dans la conception d'applications :

  • Applications bavardes : De nombreuses petites requêtes au lieu de quelques requêtes plus efficaces. Ce type de requête se caractérise par un nombre élevé de connexions et de nombreuses requêtes simples dans la liste des requêtes coûteuses récentes.
  • N+1 requêtes : Une requête initiale suivie de N requêtes supplémentaires pour des données connexes. Cela apparaît comme une requête simple avec un nombre d'exécutions par minute extrêmement élevé.
  • Ensembles de résultats volumineux : Applications qui récupèrent beaucoup plus de données que nécessaire. Recherchez les applications à haute disponibilité. Lectures logiques combiné avec de simples requêtes SELECT *.
  • Temps morts manquants : Les applications qui ne définissent pas de délais d'expiration des commandes peuvent laisser des connexions ouvertes indéfiniment, visibles sous forme de sessions de longue durée dans le volet Processus.

5. Méthodes alternatives : Obtenir les données du Moniteur d’activité via T-SQL

Bien que le Moniteur d'activité offre une interface graphique pratique, il est parfois nécessaire de récupérer des informations équivalentes par programmation ou de créer des solutions de surveillance personnalisées.

5.1 Utilisation des vues de gestion dynamique (DMV)

SQL Server expose les informations d'activité via des vues de gestion dynamiques, que le Moniteur d'activité interroge en arrière-plan.

5.1.1 Principales DMV pour la surveillance de l'activité

Le most Les DMV importantes pour reproduire les fonctionnalités du Moniteur d'activité incluent :

  • sys.dm_exec_requests : Affiche les requêtes en cours d'exécution avec des informations sur le processeur, les E/S et le temps d'attente.
  • sessions sys.dm_exec : Contient des informations au niveau de la session comme le nom d'utilisateur, host nom et nom du programme.
  • sys.dm_os_wait_stats : Fournit des statistiques d'attente cumulées pour l'ensemble de l'instance.
  • sys.dm_exec_query_stats : Contient des statistiques de performance agrégées pour les requêtes mises en cache.
  • sys.dm_io_virtual_file_stats : Renvoie les statistiques d'E/S pour les fichiers de données et les fichiers journaux.
  • sys.dm_exec_sql_text : Récupère le texte SQL pour un sql_handle ou un plan_handle donné.
  • sys.dm_exec_query_plan : Renvoie le plan d'exécution d'une requête mise en cache.

5.1.2 Exemples de requêtes pour les informations de processus

Pour reproduire les fonctionnalités du volet Processus, vous pouvez interroger :

SELECT 
    s.session_id AS [Session ID],
    CASE WHEN s.is_user_process = 1 THEN 'Yes' ELSE 'No' END AS [User Process],
    s.login_name AS [Login],
    ISNULL(CAST(r.blocking_session_id AS VARCHAR), '') AS [Blocked By],
    CASE 
        WHEN r2.session_id IS NOT NULL 
        AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
        THEN '1' 
        ELSE '' 
    END AS [Head Blocker],
    ISNULL(DB_NAME(r.database_id), '') AS [Database],
    ISNULL(t.task_state, '') AS [Task State],
    ISNULL(r.command, '') AS [Command],
    r.cpu_time AS [CPU Time],
    r.total_elapsed_time AS [Elapsed Time],
    r.wait_time AS [Wait Time],
    r.wait_type AS [Wait Type],
    s.memory_usage * 8 AS [Memory Use (KB)],
    s.host_name AS [Host Name],
    s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
WHERE s.session_id != @@SPID
ORDER BY s.session_id;

5.1.3 Exemples de requêtes pour les statistiques d'attente

Pour afficher des statistiques d'attente similaires au volet Attentes des ressources :

SELECT TOP 10
    wait_type AS [Wait Type],
    wait_time_ms / 1000.0 AS [Wait Time (sec)],
    waiting_tasks_count AS [Waiting Tasks],
    wait_time_ms / NULLIF(waiting_tasks_count, 0) AS [Avg Wait Time (ms)]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
    AND wait_type NOT LIKE '%IDLE%'
    AND wait_type NOT LIKE '%QUEUE%'
ORDER BY wait_time_ms DESC;

5.2 Utilisation de sp_WhoIsActive

sp_WhoIsActive est une procédure stockée puissante créée par la communauté qui fournit des informations plus détaillées que le Moniteur d'activité dans un seul ensemble de résultats.

5.2.1 Installation de sp_WhoIsActive

Pour installer sp_WhoIsActive :

  1. Téléchargez la dernière version sur http://whoisactive.com.
  2. Le fichier à télécharger est un script SQL contenant la définition de la procédure.
  3. Ouvrez le script dans SQL Server Atelier de gestion.
  4. Connectez-vous à votre SQL Server exemple.
  5. Exécutez le script pour créer la procédure dans la base de données principale.
  6. Accorder les autorisations d'exécution aux utilisateurs concernés.

Étant donné que sp_WhoIsActive est installé dans master, il est accessible depuis n'importe quel contexte de base de données.

5.2.2 Exemples d'utilisation de base

La manière la plus simple d'utiliser sp_WhoIsActive est :

EXEC sp_WhoIsActive;

Cette fonction renvoie un ensemble de résultats affichant toutes les sessions actives avec leurs requêtes, leurs types d'attente, les informations de blocage et l'utilisation des ressources.

Pour un échantillon de 10 secondes montrant l'activité sur cette période :

EXEC sp_WhoIsActive @delta_interval = 10;

Cela permet de calculer les variations de métriques telles que l'utilisation du processeur et les lectures, montrant ce qui s'est passé pendant ces 10 secondes.

5.2.3 Paramètres avancés

sp_WhoIsActive prend en charge de nombreux paramètres de personnalisation :

  • @filtre: Filtrer les résultats par session, base de données ou connexion.
  • @filter_type : Précisez à quoi s'applique le filtre (session, base de données, connexion, etc.).
  • @get_plans : Inclure les plans d'exécution dans les résultats (valeur : 1).
  • @get_locks : Afficher les informations détaillées sur le verrou (réglage sur 1).
  • @get_transaction_info : Afficher les détails de la transaction (paramètre 1).
  • @sort_order: Trier les résultats selon différentes métriques (CPU, lectures, durée, etc.).
  • @destination_table : Insérer les résultats dans un tableau pour le suivi historique.

Exemple montrant les plans triés par processeur :

EXEC sp_WhoIsActive 
    @get_plans = 1,
    @sort_order = '[CPU] DESC';

5.3 Utilisation des procédures stockées du système

SQL Server comprend des procédures stockées traditionnelles pour la surveillance de l'activité, bien qu'elles fournissent moins d'informations que les DMV ou le Moniteur d'activité.

5.3.1 sp_who et sp_who2

La procédure sp_who affiche les informations de session de base :

EXEC sp_who;

La procédure sp_who2 fournit des détails légèrement plus précis :

EXEC sp_who2;

Les deux procédures affichent les identifiants de session, les noms d'utilisateur, le temps processeur et les informations de blocage. Cependant, elles ne fournissent pas le niveau de détail élevé disponible via les vues de gestion dynamique (DMV) ou le Moniteur d'activité.ost Utile pour des vérifications rapides lorsque vous avez besoin d'informations minimales rapidement.

5.3.2 Autres procédures système utiles

Les procédures système supplémentaires de surveillance comprennent :

  • sp_lock : Affiche les informations de verrouillage (obsolète ; utilisez plutôt sys.dm_tran_locks).
  • moniteur_sp : Affiche des statistiques sur SQL Server activité.
  • sp_help : Affiche les définitions et les métadonnées des objets.
  • DBCC SQLPERF : Affiche les statistiques d'utilisation de l'espace du journal des transactions et d'attente.

5.4 Création de scripts de surveillance personnalisés

Pour les environnements nécessitant une surveillance spécifique allant au-delà de ce que propose le Moniteur d'activité, vous pouvez créer des solutions personnalisées à l'aide des DMV.

5.4.1 Script équivalent au Moniteur d'activité complet

Voici un script complet qui reproduit most Fonctionnalités du Moniteur d'activité :

-- Processes Information
SELECT 
    s.session_id AS [Session ID],
    CONVERT(CHAR(1), s.is_user_process) AS [User Process],
    s.login_name AS [Login],
    ISNULL(CONVERT(VARCHAR, w.blocking_session_id), '') AS [Blocked By],
    CASE 
        WHEN r2.session_id IS NOT NULL 
        AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
        THEN '1' 
        ELSE '' 
    END AS [Head Blocker],
    ISNULL(DB_NAME(r.database_id), N'') AS [Database],
    ISNULL(t.task_state, N'') AS [Task State],
    ISNULL(r.command, N'') AS [Command],
    SUBSTRING(st.text, (r.statement_start_offset/2) + 1,
        ((CASE r.statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE r.statement_end_offset 
        END - r.statement_start_offset) / 2) + 1) AS [Statement],
    st.text AS [Command Text],
    r.cpu_time AS [CPU Time (ms)],
    r.total_elapsed_time / 1000 AS [Elapsed Time (sec)],
    r.wait_time AS [Wait Time (ms)],
    r.wait_type AS [Wait Type],
    r.wait_resource AS [Wait Resource],
    s.memory_usage * 8 AS [Memory Use (KB)],
    s.host_name AS [Host Name],
    c.client_net_address AS [Net Address],
    s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests w ON r.session_id = w.blocking_session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id 
    AND r.request_id = t.request_id
LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st
WHERE s.session_id != @@SPID
ORDER BY s.session_id;

-- Recent Expensive Queries
SELECT TOP 20
    qs.execution_count / 
        DATEDIFF(MINUTE, qs.creation_time, GETDATE()) AS [Executions/min],
    qs.total_worker_time / 1000 AS [CPU Time (ms)],
    qs.total_physical_reads AS [Physical Reads],
    qs.total_logical_writes AS [Logical Writes],
    qs.total_logical_reads AS [Logical Reads],
    qs.total_elapsed_time / qs.execution_count / 1000 AS [Avg Duration (ms)],
    SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
        ((CASE qs.statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE qs.statement_end_offset 
        END - qs.statement_start_offset) / 2) + 1) AS [Query Text]
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE qs.execution_count > 0
ORDER BY qs.total_worker_time DESC;

5.4.2 Automatisation de la surveillance avec les tâches de l'agent SQL

Vous pouvez planifier des scripts de surveillance personnalisés à l'aide de SQL Server Agent:

  1. Créez une table pour stocker les résultats de la surveillance.
  2. Modifiez votre script de surveillance pour insérer les résultats dans ce tableau.
  3. In SQL Server Studio de gestion, développer SQL Server Agent dans l'explorateur d'objets.
  4. Faites un clic droit Emplois et sélectionnez New Job.
  5. Configurez la tâche pour qu'elle exécute votre script de surveillance à intervalles réguliers.
  6. Configurez des alertes ou des rapports basés sur les données collectées.

Cette approche permet un suivi historique et une analyse des tendances que le Moniteur d'activité ne propose pas.

6. Limites et considérations relatives au suivi d'activité

Bien que le Moniteur d'activité soit précieux, comprendre ses limites vous aide à l'utiliser correctement et à le compléter par d'autres outils si nécessaire.

6.1 Comprendre les informations affichées au-dessus du moniteur d'activité

Le Moniteur d'activité n'est pas gratuit : il consomme des ressources serveur pour collecter et afficher les informations. Comprendre cette consommation vous aide à l'utiliser de manière responsable.

6.1.1 Impact sur les ressources du serveur

Le Moniteur d'activité exécute des requêtes sur les vues de gestion dynamique (DMV) système à chaque actualisation. Ces requêtes consomment du processeur, génèrent des lectures logiques et peuvent brièvement verrouiller des tables système. Sur les serveurs fortement sollicités, cette surcharge peut impacter les performances.

Les volets Processus et Requêtes coûteuses récentes sont particulièrement gourmands en ressources, car ils doivent analyser des vues de gestion dynamique (DMV) et des tables de cache potentiellement volumineuses. Sur les serveurs disposant de milliers de plans de requêtes en cache, l'actualisation des Requêtes coûteuses récentes peut prendre plusieurs secondes.

La documentation de Microsoft avertit que des intervalles d'actualisation inférieurs à 10 secondes peuvent affecter sensiblement les performances du serveur, en particulier sur les systèmes déjà chargés.

6.1.2 Meilleures pratiques concernant l'intervalle d'actualisation

Choisissez les intervalles d'actualisation adaptés à votre situation :

  • 1-5 secondes : Uniquement pour le dépannage immédiat des problèmes critiques sur les serveurs peu chargés. Ne laissez pas le Moniteur d'activité s'exécuter à ces intervalles.
  • 10 secondes (par défaut) : Raisonnable pour most scénarios de dépannage et surveillance générale.
  • 30-60 secondes : Meilleur choix pour les serveurs de production soumis à une charge importante ou en cas de surveillance prolongée.
  • Actualisation manuelle uniquement : Pour les situations où vous souhaitez vérifier l'état actuel occasionnellement sans interrogation continue.

Fermez toujours le Moniteur d'activité une fois votre analyse terminée. Ne le laissez pas tourner en continu, surtout s'il s'agit de plusieurs instances d'utilisateurs différents.

6.2 Problèmes de regroupement des types d'attente

L'approche du Moniteur d'activité en matière de catégorisation des temps d'attente, bien qu'elle simplifie l'affichage, peut masquer des diagnostics importants.ostInformations sur le ic.

6.2.1 Comment les groupes de surveillance d'activité attendent

SQL Server Il enregistre des centaines de types d'attente distincts, chacun indiquant une ressource ou une condition spécifique. Activity Monitor les regroupe en grandes catégories telles que « Verrouillage du tampon », « Verrouillage » et « Mémoire ».

Par exemple, la catégorie « Verrouillage de tampon » inclut PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX et plusieurs autres types d'attente spécifiques. Bien qu'ils soient tous liés à l'accès aux pages, leurs causes et solutions diffèrent.

Microsoft ne documente pas précisément la correspondance entre les types d'attente et les catégories, ce qui rend difficile la compréhension de ce que l'on observe réellement.

6.2.2 Types d'attente manquants

Le Moniteur d'activité n'affiche pas tous les types d'attente.ost Il omet notamment souvent les temps d'attente CXPACKET, qui indiquent une exécution de requêtes parallèles. Ces temps d'attente sont fréquents et généralement sans conséquence, mais leur présence permet de mieux comprendre les caractéristiques de la charge de travail.

Lorsque le Moniteur d'activité affiche « Buffer Latch » comme principale attente, mais que d'autres outils indiquent que CXPACKET est dominant, cette différence provient de la logique de filtrage et de regroupement du Moniteur d'activité.

6.2.3 Pourquoi les types d'attente spécifiques sont importants

Il est important de connaître le type d'attente précis pour le dépannage :

  • PAGELATCH_EX : Cela indique souvent un conflit d'accès aux pages d'allocation de tempdb. La solution consiste à ajouter des fichiers de données tempdb supplémentaires.
  • PAGELATCH_SH : Cela peut indiquer des pages fréquemment consultées dans les tables utilisateur. La solution consiste à partitionner ou à réorganiser l'index.
  • PAGELATCH_UP : Fréquent lors des mises à jour. Peut indiquer un fonctionnement normal plutôt qu'un problème.

Le Moniteur d'activité regroupe tous ces éléments sous l'appellation « Verrou de tampon », ce qui complique le diagnostic. Des outils comme sp_WhoIsActive et les requêtes DMV permettent d'identifier les types d'attente spécifiques.

6.3 Exactitude et actualité des données

Le Moniteur d'activité offre un aperçu quasi en temps réel, mais le mot « quasi » est essentiel. Comprendre sa méthode de collecte de données vous aidera à interpréter correctement les résultats.

6.3.1 Surveillance instantanée vs surveillance continue

Le Moniteur d'activité affiche des instantanés pris à chaque intervalle d'actualisation. Les événements survenant entre deux instantanés ne sont pas enregistrés. Si une requête s'exécute pendant 2 secondes et que vous actualisez toutes les 10 secondes, vous la verrez peut-être une fois, voire pas du tout, selon le moment de l'actualisation.

Cela signifie que le Moniteur d'activité excelle dans la détection des problèmes persistants (blocages durant plusieurs minutes, utilisation élevée et constante du processeur), mais peut manquer les problèmes transitoires (blocages brefs, pics de requêtes occasionnels).

6.3.2 Agrégation et échantillonnage

Le volet « Requêtes coûteuses récentes » affiche les données agrégées depuis la mise en cache des plans de requête. Deux requêtes identiques avec des valeurs de paramètres différentes apparaissent sur une seule ligne si elles partagent le même plan. Cette agrégation peut masquer des problèmes liés à certaines combinaisons de paramètres (problèmes de détection de paramètres).

Le volet Attentes des ressources calcule les taux en comparant les instantanés. Si les statistiques d'attente sont réinitialisées entre les instantanés (rare mais possible), les taux calculés peuvent être incorrects.

6.4 Quand NE PAS utiliser le Moniteur d'activité

Le Moniteur d'activité n'est pas adapté à toutes les situations de surveillance. Sachez reconnaître les outils alternatifs qui constituent de meilleurs choix.

6.4.1 Exigences relatives à l'analyse historique

Le Moniteur d'activité affiche uniquement l'activité actuelle ou récente. Il ne conserve pas l'historique des données. Si vous devez analyser les tendances sur plusieurs jours ou semaines, comparer les performances actuelles à des valeurs de référence ou générer des rapports sur les schémas de performance, le Moniteur d'activité est insuffisant.

Pour l'analyse historique, utilisez SQL ServerTableau de bord de performance intégré, événements étendus avec fichier tarou des solutions de surveillance tierces.

6.4.2 Besoins en statistiques d'attente détaillées

Lorsque vous avez besoin d'informations précises sur le type d'attente pour un réglage avancé, le regroupement et le filtrage proposés par le Moniteur d'activité s'avèrent insuffisants. Utilisez plutôt les requêtes DMV directes ou la procédure stockée sp_WhoIsActive.

Pour une analyse complète des statistiques d'attente, interrogez directement sys.dm_os_wait_stats et filtrez manuellement les attentes bénignes.

6.4.3 Considérations relatives au serveur de production

Sur les serveurs de production fortement sollicités, la surcharge du Moniteur d'activité peut poser problème. Il est déconseillé à plusieurs administrateurs de bases de données d'exécuter simultanément le Moniteur d'activité sur le même serveur.

Pour la surveillance de la production, envisagez des alternatives légères comme les instantanés DMV planifiés stockés dans une base de données de surveillance, ou utilisez le routage en lecture seule pour surveiller les réplicas secondaires dans les configurations Always On.

7. Bonnes pratiques d'utilisation du moniteur d'activité

Le respect des bonnes pratiques vous permet de tirer le meilleur parti du Moniteur d'activité tout en minimisant les impacts négatifs sur vos serveurs.

7.1 Quand utiliser le Moniteur d'activité

Le Moniteur d'activité excelle dans certains cas de figure. Utilisez-le lorsque ses atouts correspondent à vos besoins.

7.1.1 Problèmes de performance en temps réel

Le Moniteur d'activité est idéal lorsque les utilisateurs rencontrent des problèmes et que vous devez en diagnostiquer la cause immédiatement. L'affichage en temps réel vous permet de voir ce qui se passe instantanément.

Lorsqu'un message vous informe que « l'application est lente », l'ouverture du Moniteur d'activité devrait être l'une de vos premières actions. Vous pourrez ainsi déterminer rapidement si la base de données est occupée, bloquée ou inactive.

7.1.2 Analyse du ralentissement de l'application

Lorsqu'une application ne répond plus, le Moniteur d'activité vous aide à déterminer si des problèmes de base de données en sont la cause. Filtrez le volet Processus par nom d'application pour afficher uniquement l'activité de base de données de cette application.

Si l'application ne présente aucune activité de base de données alors que les utilisateurs signalent des problèmes, le problème se situe ailleurs dans la pile logicielle. Si vous constatez des blocages importants ou des requêtes coûteuses, vous avez trouvé la cause du problème.

7.1.3 Contrôles rapides de santé

Le Moniteur d'activité offre un excellent tableau de bord pour des vérifications rapides de l'état de santé lors de l'administration de routine. Ouvrez-le, jetez un coup d'œil aux graphiques de synthèse et vérifiez que tout semble anormal.

Ce contrôle rapide ne prend que quelques secondes et peut révéler des problèmes avant qu'ils ne deviennent critiques. Intégrez-le à votre routine quotidienne.

7.2 Paramètres de configuration optimaux

Une configuration appropriée du Moniteur d'activité améliore à la fois son utilité et son empreinte en ressources.

7.2.1 Intervalles d'actualisation recommandés

Adaptez votre intervalle d'actualisation à votre objectif :

  • Dépannage actif : Un délai de 10 secondes offre une bonne réactivité avec une surcharge raisonnable.
  • Surveillance étendue : Un délai de 30 à 60 secondes réduit l'impact sur le serveur lors de périodes d'observation plus longues.
  • Diagnostic des problèmes critiques : 5 secondes offrent une grande précision lorsque chaque seconde compte, mais à utiliser brièvement.
  • Contrôles de santé réguliers : Actualisation manuelle (intervalle d'une heure) lorsque vous ne regardez pas activement.

N'oubliez pas de fermer le Moniteur d'activité une fois terminé. Le paramétrer sur un intervalle long et l'oublier gaspille les ressources du serveur.

7.2.2 Stratégies de filtrage

Utilisez des filtres pour vous concentrer sur les informations pertinentes et réduire la charge cognitive :

  • Processus de filtrage par Base de données pour visualiser uniquement l'activité concernant des bases de données spécifiques.
  • Filtrer par Se connecter suivre l'activité d'un utilisateur spécifique.
  • Filtrer par État de la tâche = EN COURS D'EXÉCUTION pour masquer les sessions inactives.
  • Filtrer par Application pour isoler le trafic provenant de programmes spécifiques.
  • Afficher uniquement les cellules non vides dans Bloqué par ne voir que les situations de blocage.

7.2.3 Sélection et tri des colonnes

Élaborer une approche systématique pour l'analyse des données du Moniteur d'activité :

  1. Start avec aperçu : Vérifiez les graphiques pour repérer les pics ou anomalies évidents.
  2. Vérifier les processus bloquants : Triez par ID de session, puis recherchez les valeurs « Bloqué par ».
  3. Délais d'attente des ressources de consultation : Trier par temps d'attente cumulé pour identifier les goulots d'étranglement des ressources.
  4. Analyser les requêtes coûteuses : Triez selon différentes métriques (CPU, exécutions, lectures) pour trouver différents types de problèmes.
  5. Vérifier avec le volet E/S : Vérifier si les requêtes nécessitant une activité d'E/S intensive sont corrélées à une activité disque élevée.

7.3 Intégration avec d'autres outils

Le Moniteur d'activité fonctionne mieux lorsqu'il fait partie d'une suite d'outils plus large plutôt que comme solution autonome.

7.3.1 Utilisation avec SQL Server Profiler

Moniteur d'activité et SQL Server Les outils de profilage sont complémentaires. Lorsque vous identifiez une session problématique dans le Moniteur d'activité, cliquez dessus avec le bouton droit et sélectionnez Processus de traçage dans SQL Server Profiler.

Cela lance Profiler avec des filtres déjà configurés pour ne capturer que l'activité de cette session. Vous visualisez la séquence complète des instructions exécutées, les informations de temps et les messages d'erreur — des détails que le Moniteur d'activité ne fournit pas.

Pour en apprendre plus sur SQL Server Pour en savoir plus sur les fonctionnalités de profilage et les techniques de traçage avancées, consultez notre complet SQL Server Guide du profileur.

7.3.2 Complémentarité avec des événements étendus

Les événements étendus offrent une surveillance détaillée et peu gourmande en ressources, permettant de capturer des informations que le Moniteur d'activité ne détecte pas. Créez des sessions d'événements étendus pour suivre des événements spécifiques tels que les blocages, les requêtes de longue durée ou les recompilations excessives.

Utilisez le Moniteur d'activité pour une investigation immédiate et les Événements étendus pour un suivi continu et une analyse historique. Ces deux outils répondent à des besoins différents.

Pour en apprendre plus sur SQL Server Pour en savoir plus sur les fonctionnalités étendues et les techniques de surveillance avancées, consultez notre section dédiée. complet SQL Server Guide des événements prolongés.

7.3.3 Solutions de surveillance tierces

Des outils commerciaux comme SolarWinds Database Performance Analyzer, Redgate SQL Monitor et Quest Spotlight offrent des fonctionnalités qui font défaut à Activity Monitor : alertes, tendances historiques, planification de la capacité et diagnostic automatisé.ostics.

Ces outils constituent des compléments précieux au Moniteur d'activité, et non des substituts. Le Moniteur d'activité demeure utile pour des vérifications et des investigations rapides, même en présence d'outils de surveillance sophistiqués.

7.4 Erreurs courantes à éviter

Comprendre les erreurs courantes commises par le Moniteur d'activité vous aide à l'utiliser plus efficacement.

7.4.1 Laisser le Moniteur d'activité en fonctionnement continu

Le most Une erreur fréquente consiste à ouvrir le Moniteur d'activité et à le laisser tourner indéfiniment. Cela gaspille les ressources du serveur et n'apporte que peu d'informations, car vous ne le surveillez pas activement.

Fermez le Moniteur d'activité lorsque vous ne l'utilisez pas. Si vous avez besoin d'une surveillance continue, mettez en place une solution de surveillance adaptée avec une collecte de données planifiée.

7.4.2 Se fier uniquement au Moniteur d'activité

Le Moniteur d'activité offre une vue partielle de l'état du serveur. Ne vous y fiez pas exclusivement. Utilisez en complément l'Analyseur de performances Windows pour les indicateurs au niveau du système d'exploitation, les événements étendus pour un suivi détaillé et l'analyse des plans d'exécution pour l'optimisation des requêtes.

Le Moniteur d'activité vous aide à identifier les problèmes, mais leur résolution nécessite souvent des outils supplémentaires et une analyse plus approfondie.

En savoir plus sur le SQL Server moniteur de performance dans notre guide complet.

7.4.3 Ignorer les tendances historiques

Le Moniteur d'activité affiche l'état actuel, mais les problèmes de performance présentent souvent des schémas visibles uniquement sur la durée. Mettez en place une collecte de données historiques afin de pouvoir comparer les indicateurs actuels aux valeurs de référence et identifier les tendances.

Sans contexte historique, vous pourriez ne pas vous rendre compte que l'utilisation « normale » du processeur aujourd'hui est 30 % supérieure à la valeur de référence du mois dernier, ce qui indique une dégradation progressive.

8. Résolution des problèmes liés au Moniteur d'activité

Le Moniteur d'activité peut parfois rencontrer des problèmes. Savoir comment les résoudre permet d'éviter toute frustration.

8.1 Le Moniteur d'activité ne s'ouvre pas ou n'affiche aucune donnée

Lorsque le Moniteur d'activité s'ouvre mais affiche des volets vides ou ne s'ouvre pas du tout, plusieurs facteurs peuvent en être la cause.

8.1.1 Problèmes d'autorisation

Le most Les problèmes rencontrés avec le Moniteur d'activité sont souvent dus à des autorisations insuffisantes. Pour vérifier et résoudre ce problème :

  1. Vérifiez les autorisations au niveau du serveur :
    SELECT * FROM fn_my_permissions(NULL, 'SERVER')
    WHERE permission_name = 'VIEW SERVER STATE';
    
  2. Si aucune ligne n'est renvoyée, vous ne disposez pas de l'autorisation VIEW SERVER STATE.
  3. Demandez à un administrateur de serveur de l'autoriser :
    USE master;
    GRANT VIEW SERVER STATE TO [YourLogin];
    
  4. Fermez puis rouvrez le Moniteur d'activité une fois les autorisations accordées.

8.1.2 Problèmes de compatibilité de version

Utilisation d'une ancienne version de SQL Server Management Studio pour se connecter à une version plus récente SQL Server Cette version peut entraîner des défaillances du Moniteur d'activité. L'outil risque de ne pas reconnaître les nouveaux types d'attente ou les colonnes de la vue système.

Utilisez toujours une version de SSMS identique ou plus récente que la vôtre. SQL Server version. Microsoft propose la dernière version de SSMS en téléchargement gratuit, séparément de SQL Server elle-même.

8.1.3 Problèmes de pare-feu et de réseau

Le Moniteur d'activité nécessite une connexion au SQL Server L'instance utilise les ports standard (1433 par défaut). Si la connexion est possible via l'Explorateur d'objets mais que le Moniteur d'activité échoue, il est possible que des règles de pare-feu bloquent certaines connexions.

Vérifiez que votre client peut joindre le SQL Server Vérifiez que tous les ports nécessaires sont ouverts sur la machine. Assurez-vous que le pare-feu Windows et les pare-feu réseau présents entre votre client et le serveur sont bien configurés.

8.2 Moniteur d'activité en pause permanente

Un problème courant, notamment dans SQL Server En 2019, le Moniteur d'activité s'ouvrait en pause et refusait de reprendre.

8.2.1 Comprendre l'état de pause

Lorsque le Moniteur d'activité se met en pause, tous les volets affichent l'état « En pause » avec un bouton de reprise qui peut ne pas fonctionner. Vous ne pouvez alors plus visualiser l'activité du serveur.

L'état de pause est généralement dû à des problèmes d'autorisation, à des restrictions de connexion à distance ou à des bogues de version de SSMS plutôt qu'à une action de pause intentionnelle.

8.2.2 Causes courantes

Le Moniteur d'activité peut passer en état de pause permanent en raison de :

  • L'autorisation VIEW SERVER STATE est manquante sur les nouveaux volets ajoutés récemment. SQL Server versions
  • Les connexions à distance sont désactivées sur le SQL Server instance
  • Échecs d'authentification pour certaines requêtes système
  • Des bogues ont été identifiés dans certaines versions de SSMS, notamment les versions 18.0 à 18.3.
  • Problèmes de connectivité entre le client et le serveur

8.2.3 Étapes de résolution

Pour résoudre les problèmes d'état en pause du Moniteur d'activité :

  1. Mise à jour de SSMS : Téléchargez et installez la dernière SQL Server Version de Management Studio disponible sur le site web de Microsoft. De nombreux bogues liés à l'état de pause ont été corrigés dans les versions ultérieures.
  2. Vérifier les autorisations : Assurez-vous de disposer des autorisations VIEW SERVER STATE et VIEW ANY DEFINITION.
  3. Vérifier les connexions distantes : Vérifiez que le SQL Server Cette instance permet les connexions à distance :
    EXEC sp_configure 'remote access';
    

    Si la valeur est 0, demandez à un administrateur de l'activer.

  4. Restart SSMS : Parfois, il suffit simplement de fermer toutes les fenêtres et de rechargertarting SQL Server Management Studio résout le problème.
  5. Se connecter avec l'authentification Windows : Si vous utilisez l'authentification SQL, essayez plutôt l'authentification Windows, car elle permet parfois de contourner les problèmes de suspension liés à l'authentification.

8.3 Problèmes de performances lors de l'utilisation du Moniteur d'activité

Si le Moniteur d'activité lui-même devient lent ou entraîne une dégradation des performances du serveur, un réglage est nécessaire.

8.3.1 Réduction des coûts de surveillance

Pour minimiser l'impact du Moniteur d'activité :

  1. Augmentez l'intervalle d'actualisation à 30 secondes ou à 1 minute.
  2. Fermez les panneaux que vous n'utilisez pas en cliquant sur le bouton de réduction.
  3. Lorsque les volets sont réduits, le Moniteur d'activité n'interroge pas les données les concernant.
  4. Évitez d'exécuter plusieurs instances du Moniteur d'activité simultanément.
  5. Fermez complètement le Moniteur d'activité lorsque vous n'êtes pas en train d'étudier activement des problèmes.

8.3.2 Méthodes alternatives de surveillance légère

Si le Moniteur d'activité consomme trop de ressources pour votre environnement, envisagez des alternatives :

  • Interrogez directement les DMV : Rédigez des requêtes T-SQL spécifiques qui extraient uniquement les informations dont vous avez besoin.
  • Utilisez sp_WhoIsActive : Cette procédure stockée est hautement optimisée et présente généralement une surcharge inférieure à celle du Moniteur d'activité.
  • Mise en œuvre de l'échantillonnage : Planifiez des tâches SQL Agent qui capturent des instantanés des données DMV à intervalles réguliers et stockent les résultats dans des tables pour une analyse ultérieure.
  • Surveiller les répliques secondaires : In Groupes de disponibilité Always OnExécutez le Moniteur d'activité sur un serveur secondaire lisible plutôt que sur le serveur principal.

8.4 Informations inexactes ou manquantes

Il arrive que le Moniteur d'activité affiche des informations qui semblent incorrectes ou incomplètes.

8.4.1 Vérification des données auprès des services d'immatriculation des véhicules

Lorsque les résultats du Moniteur d'activité semblent suspects, vérifiez-les en interrogeant directement les vues de gestion dynamique (DMV) sous-jacentes. Par exemple, si le volet Processus n'affiche aucun blocage, mais que des utilisateurs en signalent, interrogez :

SELECT 
    blocking_session_id,
    session_id,
    wait_type,
    wait_time,
    wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;

Si cette requête révèle un blocage que le Moniteur d'activité a manqué, vous avez confirmé un problème d'affichage.

8.4.2 Comprendre le calendrier d'actualisation des données

N'oubliez pas que le Moniteur d'activité affiche des instantanés. Une requête exécutée entre deux actualisations n'apparaîtra pas dans la section « Requêtes récentes coûteuses » sauf si son plan d'exécution est toujours en cache.

De même, les statistiques d'attente dans le volet Attentes des ressources reflètent l'accumulation depuis le dernier instantané. Les charges de travail évoluant rapidement peuvent présenter des schémas différents à chaque actualisation.

9. Techniques avancées de suivi d'activité

Les administrateurs de bases de données expérimentés utilisent le Moniteur d'activité de manière sophistiquée pour extraire un maximum de diagnostics.ostvaleur ic.

9.1 Combinaison de plusieurs volets pour l'analyse des causes profondes

La véritable puissance du Moniteur d'activité se révèle lorsque vous mettez en corrélation les informations provenant de plusieurs volets pour comprendre des problèmes de performance complexes.

9.1.1 Corrélation des temps d'attente avec les processus

Lorsque le volet Attentes des ressources affiche des temps d'attente élevés dans une catégorie, utilisez le volet Processus pour identifier les sessions concernées par ces attentes :

  1. Notez la catégorie d'attente avec un temps d'attente cumulé élevé (par exemple, « Verrouillage »).
  2. Passez au volet Processus.
  3. Trier par Type d'attente regrouper les séances en fonction de leur temps d'attente actuel.
  4. Recherchez les sessions présentant des types d'attente dans la catégorie problématique.
  5. Pour ces séances, examinez le Ressource d'attente colonne permettant de voir quels objets de base de données sont impliqués.
  6. Faites un clic droit et sélectionnez DÉTAILS pour afficher le texte de la requête.

Cette corrélation vous aide à passer de « nous avons des attentes de verrouillage » à « cette requête spécifique attend des verrous sur cette table ».

9.1.2 Lier les requêtes coûteuses aux problèmes d'E/S

Lorsque le volet E/S de fichiers de données affiche une activité disque élevée sur une base de données spécifique :

  1. Notez quels fichiers de base de données présentent des vitesses de lecture ou d'écriture élevées en MB/s.
  2. Passer aux requêtes récentes les plus coûteuses.
  3. Trier par Lectures physiques/s identifier les requêtes qui lisent beaucoup sur le disque.
  4. Filtrer ou identifier visuellement les requêtes exécutées sur la base de données avec une activité d'E/S élevée.
  5. Examinez les plans d'exécution de ces requêtes pour détecter les analyses de table ou les index manquants qui entraînent des E/S excessives.

Cette analyse multi-panneaux relie les symptômes (E/S disque élevées) aux causes (requêtes inefficaces spécifiques).

9.2 Utilisation du Moniteur d'activité pour la planification des capacités

Bien que le Moniteur d'activité ne stocke pas de données historiques, vous pouvez l'utiliser de manière stratégique pour les observations relatives à la planification des capacités.

9.2.1 Identification des pics d'utilisation

Surveillez l'activité du serveur à différents moments de la journée afin d'identifier les tendances d'utilisation :

  1. Ouvrez le Moniteur d'activité pendant les heures de pointe connues.
  2. Notez les valeurs maximales du graphique « % de temps processeur ».
  3. Enregistrez le nombre maximal de tâches en attente.
  4. Observer le nombre de requêtes par lot/seconde aux heures de pointe.
  5. Documentez les bases de données les plus sollicitées dans le volet Processus.
  6. Répéter l'opération pendant les heures creuses à titre de comparaison.

Si le temps d'utilisation du processeur dépasse constamment 80 % aux heures de pointe, vous approchez des limites de sa capacité. De même, une augmentation du nombre de requêtes d'attente indique une contention croissante des ressources.

9.2.2 Analyse des tendances des ressources

Bien que le Moniteur d'activité affiche l'état actuel, vous pouvez l'utiliser pour vérifier ponctuellement les tendances en enregistrant les indicateurs clés au fil du temps :

  • Prenez des captures d'écran du volet Vue d'ensemble à la même heure chaque jour.
  • Enregistrez les valeurs maximales de chaque graphique
  • Comparer d'une semaine à l'autre pour identifier les tendances de croissance
  • Surveillez les augmentations progressives du temps de traitement moyen ou des débits d'E/S

Ce suivi manuel des tendances complète les solutions de surveillance plus sophistiquées et contribue à justifier l'extension des capacités.

9.3 Documentation des références de performance

L'établissement de mesures de performance de référence vous aide à identifier les baisses de performance.

9.3.1 Collecte des indicateurs de référence

Pendant les périodes de bonnes performances connues, documentez les indicateurs du Moniteur d'activité :

  1. Ouvrez le Moniteur d'activité pendant les heures normales d'exploitation (hors périodes de pointe et hors pointe).
  2. Valeurs du volet Vue d'ensemble de l'enregistrement :
    • Plage typique de pourcentage de temps processeur
    • Nombre moyen de tâches en attente
    • Taux d'E/S normal de la base de données
    • Requêtes par lots typiques/seconde
  3. Notez les catégories du volet Attentes de ressources qui affichent le most temps d'attente.
  4. Documentez le nombre de processus actifs généralement affiché dans le volet Processus.
  5. Enregistrez les indicateurs d'exécution représentatifs des requêtes coûteuses récentes.

Conservez cette documentation de référence pour pouvoir vous y référer ultérieurement lors de l'investigation de problèmes de performance.

9.3.2 Comparaison des performances actuelles et de référence

En cas de problèmes de performances, comparez les relevés actuels du Moniteur d'activité à votre base de référence documentée :

  • Le temps processeur est-il significativement plus élevé que la normale ? Concentrez-vous sur les requêtes gourmandes en ressources CPU.
  • Les tâches en attente sont-elles 2 à 3 fois supérieures aux niveaux de référence ? Analysez les temps d’attente des ressources.
  • Les E/S sont-elles sensiblement plus élevées ? Consultez le volet E/S des fichiers de données et les requêtes coûteuses.
  • Les requêtes par lots sont-elles inférieures au niveau de base aux heures de pointe ? Recherchez les problèmes de blocage ou de connectivité.

Cette comparaison vous aide à identifier les changements et à concentrer vos efforts de dépannage de manière appropriée.

9.4 Création de flux de travail de surveillance personnalisés

Élaborer des flux de travail systématiques pour les scénarios d'enquête courants afin de garantir une analyse approfondie et reproductible.

9.4.1 Processus d'enquête étape par étape

Lorsque les utilisateurs signalent des problèmes de performance, suivez une procédure cohérente :

  1. Bilan de santé rapide : Ouvrez le Moniteur d'activité et examinez les graphiques du volet Vue d'ensemble pour détecter les anomalies évidentes.
  2. Vérifier le blocage : Développez le volet Processus, filtrez pour ne retenir que les éléments non vides dans la colonne Bloqué par.
  3. Identifier les conflits de ressources : Consultez le volet « Attentes des ressources » trié par temps d'attente.
  4. Trouver les requêtes coûteuses : Examinez les requêtes coûteuses récentes triées par processeur, puis par exécutions, puis par lectures.
  5. Corréler les modèles d'E/S : Comparez les requêtes coûteuses avec l'activité du volet E/S de fichiers de données.
  6. Résultats du document : Prenez des captures d'écran et notez les identifiants de session pertinents, les types d'attente et les détails des requêtes.
  7. Plongée profonde: Utilisez les traces du Profiler, l'analyse du plan d'exécution et les requêtes DMV pour une investigation détaillée des problèmes identifiés.

9.4.2 Critères d'escalade

Établir des critères pour déterminer quand il convient de faire remonter les problèmes ou de poursuivre l'enquête :

  • Escalader immédiatement : Chaînes de blocage durant plus de 5 minutes, temps processeur à 100 % pendant plus de 2 minutes, processus système critiques affichant l'état SUSPENDU.
  • Intensifier l'analyse : Requêtes coûteuses récurrentes consommant plus de 50 % du processeur, temps de réponse d'E/S constamment élevés (> 50 ms), échecs répétés d'octroi de mémoire.
  • Approfondir l'enquête : Temporary attend la résolution en quelques minutes, requêtes avec des plans sous-optimaux mais des performances acceptables, blocage mineur d'une durée < 30 secondes.

10. Moniteur d'activité dans différents SQL Server versions

Le Moniteur d'activité a évolué à travers SQL Server des versions, chaque version apportant des améliorations et parfois de nouveaux problèmes.

10.1 Moniteur d'activité dans SQL Server 2008 et plus tard

SQL Server L'année 2008 a introduit le design moderne du Moniteur d'activité, qui reste en grande partie inchangé aujourd'hui.

10.1.1 Nouvelles fonctionnalités introduites dans SQL Server 2008

Le SQL Server La refonte du Moniteur d'activité de 2008 a apporté des améliorations significatives :

  • Tableau de bord graphique avec graphiques en temps réel dans le volet Vue d'ensemble
  • Interface à volets extensibles/réductibles remplaçant l'ancienne vue en grille uniquement
  • Volet « Requêtes coûteuses récentes » affichant les données agrégées de performance des requêtes
  • Panneau d'E/S de fichiers de données pour la surveillance de l'activité disque par fichier
  • Volet amélioré « Attentes de ressources » avec catégorisation des attentes
  • Menus contextuels accessibles par clic droit pour les actions sur les processus, comme la fermeture de sessions et le lancement du Profiler.
  • Intervalles de rafraîchissement configurables de 1 seconde à 1 heure

Ces modifications ont transformé Activity Monitor, d'une simple liste de processus, en un tableau de bord de surveillance complet.

10.1.2 Modifications par rapport à SQL Server 2005

SQL Server Le Moniteur d'activité de 2005 était beaucoup plus limité :

  • Accessible via le dossier Gestion dans l'Explorateur d'objets plutôt que via la barre d'outils
  • Tableau unique affichant la liste des processus avec les informations de base
  • Pas de graphiques ni de panneaux multiples
  • Aucune requête coûteuse ni surveillance des E/S
  • Informations statistiques sur les temps d'attente limités

La refonte de 2008 représentait une réinvention complète plutôt qu'une amélioration progressive.

10.2 Moniteur d'activité dans SQL Server 2014/2016

SQL Server Les versions 2014 et 2016 ont apporté des améliorations progressives à la collecte de données sous-jacente du Moniteur d'activité, mais peu de changements visuels.

10.2.1 Améliorations et perfectionnements

Les principales améliorations apportées à ces versions incluent :

  • Meilleures performances lors de la surveillance de serveurs avec des milliers de plans mis en cache
  • Fonctionnalités de filtrage améliorées dans le volet Processus
  • Amélioration de la précision de l'agrégation des statistiques d'attente
  • Meilleure gestion du tri et du filtrage des colonnes avec de grands ensembles de résultats
  • Des requêtes DMV plus efficaces réduisent la charge de surveillance

L'interface principale est restée cohérente avec SQL Server 2008, maintien de la familiarité pour les administrateurs.

10.3 Moniteur d'activité dans SQL Server 2019/2022

Articles de SQL Server Les versions suivantes poursuivent l'évolution du Moniteur d'activité en mettant l'accent sur les performances et la stabilité.

10.3.1 Dernières fonctionnalités et capacités

SQL Server Le Moniteur d'activité 2019 et 2022 comprend :

  • Prise en charge des nouveaux types d'attente introduits dans ces versions
  • Amélioration des performances de rendu dans SSMS grâce à la technologie WPF
  • Meilleure gestion d'un grand nombre de sessions actives
  • Compatibilité améliorée avec les plateformes SQL cloud
  • Mesures plus précises du processeur et des E/S

10.3.2 Problèmes connus dans les versions récentes

SQL Server L'année 2019 a introduit plusieurs bugs dans le Moniteur d'activité :

  • État de pause permanent : Le Moniteur d'activité se met fréquemment en pause et ne reprend pas, notamment dans SSMS 18.0-18.3. Ce problème a été corrigé dans les versions ultérieures de SSMS.
  • Échecs de connexion à distance : Certaines configurations empêchent l'ouverture du Moniteur d'activité sur les instances distantes. Pour contourner ce problème, il est possible d'activer des indicateurs de trace spécifiques ou d'utiliser des versions plus récentes de SSMS.
  • Problèmes d'autorisation : Les nouvelles vues système nécessitent des autorisations supplémentaires qui ne sont pas clairement documentées, ce qui provoque des affichages vides même avec l'option VIEW SERVER STATE.

Utilisez toujours la dernière version de SSMS lorsque vous travaillez avec SQL Server 2019 et 2022 pour éviter ces problèmes.

11. Cas d'utilisation pratiques et exemples

Des exemples concrets montrent comment utiliser efficacement le Moniteur d'activité dans des scénarios de dépannage courants.

11.1 Étude de cas : Diagnostic d’une application Web lente

Une équipe de développement signale que son application web est devenue excessivement lente, le chargement des pages prenant 20 à 30 secondes au lieu des 2 à 3 secondes habituelles.

11.1.1 Investigation initiale avec volet Vue d'ensemble

Ouvrez le Moniteur d'activité et examinez le volet Vue d'ensemble :

  1. Le graphique du pourcentage de temps processeur indique une utilisation du processeur de 85 à 95 %, soit nettement plus élevée que la valeur de référence normale de 30 à 40 %.
  2. Le nombre de tâches en attente fluctue entre 10 et 20 tâches, contre une valeur de base normale de 0 à 3.
  3. L'activité d'E/S de la base de données est modérée, autour de 50 Mo/s.
  4. Le nombre de requêtes par lot par seconde est inférieur aux prévisions, à 100/seconde, contre 300 à 400/seconde en moyenne pendant les heures ouvrables.

Ce schéma suggère un goulot d'étranglement au niveau du processeur, avec une contention des ressources entraînant une réduction du débit. Le serveur est fortement sollicité, mais ne traite qu'un nombre limité de requêtes.

11.1.2 Identification de la requête problématique

Développez le volet Requêtes coûteuses récentes et triez par Exécutions/min :

  1. La requête principale affiche 15 000 exécutions par minute.
  2. Faites un clic droit et sélectionnez Modifier le texte de la requête examiner la requête.
  3. La requête est une simple instruction SELECT récupérant un seul enregistrement utilisateur : SELECT * FROM Users WHERE UserId = @UserId.
  4. Cette requête ne devrait pas s'exécuter 15 000 fois par minute en cas d'utilisation normale de l'application.

Cliquez avec le bouton droit sur la requête et sélectionnez Afficher le plan d'exécutionLe plan indique une analyse de la table Users avec un avertissement concernant un index manquant sur la colonne UserId.

Filtrez le volet Processus par Application pour afficher uniquement les connexions de l'application web. Plusieurs sessions indiquent l'exécution répétée de cette même requête.

11.1.3 Résolution et vérification

Le problème provient de deux facteurs : un nombre excessif d’exécutions de requêtes et un index manquant. Étapes de résolution :

  1. Créer l'index manquant :
    CREATE NONCLUSTERED INDEX IX_Users_UserId 
    ON Users (UserId);
    
  2. Contactez l'équipe de développement Concernant les exécutions excessives, l'enquête révèle un problème de requête N+1 dans le code de l'application, où une boucle récupère les informations utilisateur pour chaque élément d'une liste.
  3. Modifier l'application pour regrouper les recherches utilisateur en une seule requête à l'aide d'une clause IN ou d'un paramètre de type table.
  4. Vérifiez la correction En surveillant le Moniteur d'activité après le déploiement, on constate que l'utilisation du processeur chute à 35-40 %, le nombre d'exécutions par minute diminue à 200-300 et les temps de réponse de l'application reviennent à la normale.

11.2 Étude de cas : Résolution d'un problème bloquant

Les utilisateurs signalent que le système de saisie des commandes se bloque périodiquement pendant 30 à 60 secondes avant de reprendre son fonctionnement normal.

11.2.1 Détection de la chaîne bloquante

Ouvrez le Moniteur d'activité pendant l'un de ces événements de blocage et développez le volet Processus :

  1. Trier par Session ID pour voir toutes les sessions organisées.
  2. Plusieurs sessions affichent des valeurs dans le Bloqué par colonne, tous pointant vers l'ID de session 73.
  3. La session 73 affiche « 1 » dans le Bloqueur de tête colonne, confirmant qu'il s'agit de la cause première.
  4. Le Type d'attente Pour les sessions bloquées, le code LCK_M_X s'affiche, indiquant qu'elles attendent des verrous exclusifs.
  5. Le Ressource d'attente La colonne indique que le blocage se situe au niveau de la table Orders.

11.2.2 Analyse de la cause

Cliquez avec le bouton droit sur la session 73 et sélectionnez DÉTAILS pour afficher la commande :

UPDATE Orders 
SET Status = 'Processing', 
    LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);

Cette mise à jour fait partie d'un traitement par lots exécuté toutes les heures. Vérification de Se connecter Cette colonne confirme que la session appartient au compte de service de traitement par lots.

La requête verrouille la table Orders pendant le traitement de milliers de commandes. Temps d'attente Le nombre de sessions bloquées augmente régulièrement, confirmant que cette opération de longue durée est bien à l'origine du problème.

11.2.3 Mise en œuvre du correctif

Résolution à court terme :

  1. Documentez les détails de la session 73, y compris le texte de la requête et sa durée.
  2. Laissez la mise à jour se terminer normalement, car il s'agit d'un traitement par lots légitime.
  3. Une fois l'opération terminée, vérifiez que les sessions bloquées sont bien débloquées et que le fonctionnement normal reprend.

Solutions à long terme mises en œuvre :

  1. Reprogrammer le traitement par lots fonctionner pendant les heures creuses (de 2h à 4h du matin au lieu des heures de bureau).
  2. Modifier le traitement par lots mettre à jour les commandes par petits lots de 100 enregistrements à la fois, en libérant les verrous entre les lots.
  3. Ajouter un index sur la colonne OrderId afin d'accélérer l'opération de mise à jour.
  4. Envisagez l'isolation SNAPSHOT pour les opérations de lecture afin de réduire l'impact du blocage.

11.3 Étude de cas : Identification des exécutions de requêtes excessives

La surveillance de la base de données montre que l'utilisation du processeur a progressivement augmenté au cours du mois dernier, mais aucun changement évident n'est survenu dans le code de l'application.

11.3.1 Détection des nombres d'exécution anormaux

Ouvrez le Moniteur d'activité et examinez le volet Requêtes coûteuses récentes :

  1. Trier par Exécutions/min pour voir le most requêtes fréquemment exécutées.
  2. La requête principale affiche 37 000 exécutions par minute, soit bien plus que toute autre requête.
  3. Faites un clic droit et sélectionnez Modifier le texte de la requête.
  4. La requête récupère les informations sur la catégorie de produit :
    SELECT CategoryId, CategoryName 
    FROM ProductCategories 
    WHERE CategoryId = @CategoryId;
    
  5. Cette simple requête devrait être rapide et mise en cache, et pourtant elle s'exécute des dizaines de milliers de fois par minute.

11.3.2 Traçage du code de l'application

Dans le volet Processus, recherchez les sessions exécutant cette requête :

  1. Noter la Application La colonne affiche « ProductCatalogService ».
  2. Faites un clic droit sur l'une de ces sessions et sélectionnez Processus de traçage dans SQL Server Profiler.
  3. SQL Profiler révèle que la requête s'exécute de manière répétée et rapide avec différentes valeurs de CategoryId.
  4. Contactez l'équipe de développement qui gère ProductCatalogService pour une revue de code.

L'analyse du code révèle le problème : une modification récente récupère les listes de produits avec leurs catégories. Pour chaque produit du résultat (souvent plus de 1 000 produits), le code effectue un appel distinct à la base de données pour obtenir les informations de catégorie — un problème classique de requêtes N+1.

11.3.3 Optimisation de l'application

Mettre en œuvre une solution appropriée :

  1. Modifier la requête de l'application utiliser une jointure pour récupérer les produits et leurs catégories en un seul appel de base de données :
    SELECT p.ProductId, p.ProductName, c.CategoryId, c.CategoryName
    FROM Products p
    INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId
    WHERE p.Active = 1;
    
  2. Déployez le code mis à jour et surveiller le Moniteur d'activité.
  3. Vérifiez la correction : Le nombre d'exécutions par minute pour la requête de catégorie passe de 37 000 à moins de 100, et l'utilisation globale du processeur diminue de 40 %.
  4. Consignez la leçon apprise et partagez ces informations avec l'équipe de développement afin d'éviter des problèmes similaires lors de futures modifications du code.

12. Détecter les risques de corruption de la base de données

Bien que le Moniteur d'activité ne soit pas spécifiquement conçu pour détecter la corruption de bases de données, certains schémas d'affichage peuvent suggérer des problèmes de corruption sous-jacents qui justifient une enquête plus approfondie.

12.1 Symptômes de corruption potentielle de la base de données

En cas de corruption de la base de données et d'accès à celle-ci, vous pourriez occasionnellement voir :

1. Dans le volet Processus :

  • Sessions bloquées à l'état SUSPENDU avec des types d'attente inhabituels
  • Processus présentant des états d'erreur
  • Les requêtes échouent de manière répétée

2. Dans le volet Attentes des ressources :

  • Types d'attente inhabituels liés aux E/S pouvant indiquer des problèmes de disque (bien que cela indique plus probablement des problèmes matériels qu'une corruption logique).

3. Dans les requêtes coûteuses récentes :

  • Les requêtes présentant un nombre anormalement élevé de lectures physiques tentent de manière répétée de lire des pages corrompues.

12.2 Vérification supplémentaire avec DBCC CHECKDB

Lorsque le Moniteur d'activité affiche des symptômes suggérant une corruption potentielle, exécutez immédiatement la commande DBCC CHECKDB pour vérifier l'intégrité de la base de données. Cette commande analyse toutes les pages de la base de données, valide les sommes de contrôle et recherche les erreurs de cohérence logique.

Pour en savoir plus sur l'utilisation de DBCC CHECKDB pour vérifier et corriger les corruptions de bases de données, consultez notre documentation. Guide complet DBCC CHECKDB.

12.3 Réparation avec des outils professionnels

Si DBCC CHECKDB confirme une corruption de la base de données, plusieurs options de réparation s'offrent à vous :

13. Conclusion

SQL Server L'outil de surveillance d'activité est un outil précieux pour les administrateurs de bases de données, fournissant des informations immédiates sur les performances du serveur et aidant à diagnostiquer les problèmes rapidement et efficacement.

13.1 Résumé des points clés

Tout au long de ce guide, nous avons exploré comment le Moniteur d'activité vous aide à comprendre et à résoudre les problèmes. SQL Server performance:

  • Activity Monitor offre une visibilité en temps réel sur les processus, les attentes, les requêtes et les E/S grâce à une interface graphique organisée.
  • Les cinq panneaux — Vue d'ensemble, Processus, Attentes de ressources, E/S de fichiers de données et Requêtes coûteuses récentes — offrent chacun une perspective unique sur l'activité du serveur.
  • Les scénarios de dépannage courants tels que les exécutions excessives de requêtes, les chaînes bloquantes et l'utilisation élevée du processeur deviennent gérables grâce à une analyse systématique du Moniteur d'activité.
  • Bien que puissant, le Moniteur d'activité présente des limitations, notamment l'absence de données historiques, le regroupement par type d'attente et une surcharge de surveillance qui affectent son application.cabilité.
  • L'ajout de requêtes DMV, de sp_WhoIsActive, d'événements étendus et éventuellement d'outils tiers à Activity Monitor permet de créer une stratégie de surveillance complète.
  • Le respect des bonnes pratiques en matière d'intervalles d'actualisation, la fermeture du Moniteur d'activité lorsqu'il n'est pas utilisé et la combinaison de plusieurs volets pour la corrélation permettent d'optimiser son utilisation tout en minimisant son impact.

13.2 Moniteur d'activité intégré à votre boîte à outils

L'Analyseur d'activité doit être votre premier outil d'analyse des performances, et non le seul. Sa force réside dans la visibilité immédiate qu'il offre lors du dépannage, vous permettant de déterminer rapidement si la base de données est le facteur limitant et d'identifier les aspects spécifiques nécessitant une investigation plus approfondie.

Considérez le Moniteur d'activité comme le tableau de bord de votre voiture : il vous avertit immédiatement en cas de problème et vous aide à identifier la zone concernée. De même que le tableau de bord de votre voiture ne vous indique pas précisément pourquoi le voyant moteur s'est allumé, le Moniteur d'activité vous oriente vers des problèmes sans toujours en révéler la cause profonde. Une analyse plus poussée nécessite des outils et une expertise supplémentaires.

Intégrez Activity Monitor à une suite d'outils plus complète comprenant l'analyse des plans d'exécution, le suivi des statistiques d'attente, les solutions de surveillance de l'historique et les bonnes pratiques de performance. Utilisez-le conjointement avec des stratégies d'indexation appropriées, des techniques d'optimisation des requêtes et une planification de la capacité.

13.3 Poursuivre votre parcours d'apprentissage

La maîtrise du Moniteur d'activité n'est qu'une étape pour devenir un administrateur de base de données efficace. Poursuivez le développement de vos compétences en :

  • Apprendre à interpréter les plans d'exécution et à identifier les opérations inefficaces
  • Comprendre SQL Server statistiques d'attente et leurs implications
  • Étude des techniques de conception et d'optimisation des indices
  • Explorer SQL Serverson architecture et son mode de traitement des requêtes
  • Mise en pratique de méthodologies de dépannage systématiques
  • Expérience en matière de développement avec les événements étendus pour un traçage détaillé
  • Comprendre les niveaux d'isolation des transactions et leur impact sur les performances

Chaque analyse de performance réalisée avec le Moniteur d'activité vous apprend quelque chose de nouveau sur la façon dont SQL Server Décrivez le fonctionnement et l'interaction des applications avec les bases de données. Documentez vos découvertes, partagez vos connaissances avec vos collègues et contribuez à la création d'une bibliothèque.rary de solutions aux problèmes courants.

13.4 Ressources supplémentaires

Développez vos connaissances grâce à ces précieuses ressources :

14. Foire aux questions (FAQ)

Q: Qu'est-ce que SQL Server Moniteur d'activité ?

A: SQL Server Moniteur d'activité est un outil intégré à SQL Server Studio de gestion qui affiche des informations en temps réel sur les processus exécutés sur un SQL Server Il fournit un tableau de bord graphique composé de cinq volets présentant différents aspects de l'activité du serveur, notamment l'utilisation du processeur, les tâches en attente, les débits d'E/S, les sessions actives et les requêtes coûteuses.

Q : Comment ouvrir le Moniteur d'activité dans SSMS ?

R : Vous pouvez ouvrir le Moniteur d'activité de quatre manières : (1) Cliquez sur l'icône Moniteur d'activité dans la barre d'outils SSMS, (2) Cliquez avec le bouton droit sur votre SQL Server nom de l'instance dans l'Explorateur d'objets et sélectionnez Moniteur d'activité, (3) Press Ctrl + Alt + A, ou (4) Configurer SSMS pour qu'il le lance automatiquement via Outils -> Options -> Environnement -> Démarrage.

Q : De quelles autorisations ai-je besoin pour utiliser le Moniteur d'activité ?

A : Vous avez besoin du AFFICHER L'ÉTAT DU SERVEUR permission de voir most Informations du Moniteur d'activité. Pour le volet E/S de fichiers de données, vous avez également besoin soit de CRÉER UNE BASE DE DONNÉES, MODIFIER N'IMPORTE QUELLE BASE DE DONNÉES, AFFICHER N'IMPORTE QUELLE DÉFINITION autorisations. Sans ces autorisations, le Moniteur d'activité peut s'ouvrir, mais afficher des volets vides.

Q : Pourquoi mon Moniteur d'activité est-il en pause ou ne fonctionne-t-il pas ?

R : Le Moniteur d'activité se bloque généralement en raison de problèmes d'autorisation, de versions obsolètes de SSMS ou de connexions distantes désactivées. Pour résoudre ce problème : (1) Mettez à jour SSMS vers la dernière version, (2) Vérifiez que vous disposez de l'autorisation VIEW SERVER STATE, (3) Vérifiez que les connexions distantes sont activées sur le serveur. SQL Server par exemple, (4) Restart SSMS, et (5) Essayez de vous connecter avec l'authentification Windows au lieu de l'authentification SQL si applicablecabelles.

Q : Quelle est la différence entre le Moniteur d'activité et sp_WhoIsActive ?

A: Le Moniteur d'activité est un outil graphique intégré à SSMS qui propose des volets organisés pour différents aspects de la surveillance. sp_WhoIsActive est une procédure stockée gratuite, créée par la communauté, qui renvoie des informations détaillées sur la session dans un seul ensemble de résultats, avec des types d'attente, des détails de blocage et des options de personnalisation plus spécifiques que le Moniteur d'activité. Ce dernier est plus adapté à l'exploration visuelle, tandis que sp_WhoIsActive excelle dans la surveillance automatisée et fournit des informations plus détaillées.

Q : Le Moniteur d'activité a-t-il un impact sur les performances du serveur ?

R : Oui, le Moniteur d'activité engendre une surcharge mesurable car il interroge les vues de gestion dynamique (DMV) système à chaque actualisation. Cet impact augmente avec la fréquence d'actualisation : Microsoft avertit que des intervalles inférieurs à 10 secondes peuvent affecter les performances du serveur. Il est recommandé de fermer le Moniteur d'activité lorsqu'il n'est pas utilisé et d'envisager des intervalles d'actualisation de 30 à 60 secondes sur les serveurs de production soumis à une charge importante.

Q : Puis-je obtenir des données du Moniteur d'activité à l'aide de T-SQL ?

R : Oui, le Moniteur d'activité interroge les vues de gestion dynamique du système telles que sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats et sys.dm_exec_query_stats. Vous pouvez interroger directement ces vues de gestion dynamique à l'aide de T-SQL pour récupérer des informations équivalentes par programmation, ce qui permet de créer des scripts de surveillance personnalisés et d'automatiser la collecte de données.

Q : Quel est l'intervalle d'actualisation par défaut ?

R : L'intervalle d'actualisation par défaut est de 10 secondes. Vous pouvez le modifier en cliquant avec le bouton droit n'importe où dans le volet Vue d'ensemble, puis en sélectionnant Intervalle de rafraîchissementet en choisissant parmi les options prédéfinies : 1 seconde, 5 secondes, 10 secondes, 30 secondes, 1 minute ou 1 heure. Les intervalles plus courts offrent une vue en temps réel plus rapide, mais augmentent la charge de surveillance.

Q : Comment puis-je ouvrir automatiquement le Moniteur d'activité dans SSMS ?tarmouton?

A : Configurer le lancement automatique via les options SSMS : Accédez à Outils -> Options -> Environnement -> Démarrage, Puis sélectionnez Ouvrez l'explorateur d'objets et le moniteur d'activité du à startube Menu déroulant. Le Moniteur d'activité s'ouvrira automatiquement chaque fois que vous vous connecterez à un serveur dans SSMS.

Q : Quelles sont les limites du Moniteur d'activité ?

A : Les principales limitations sont les suivantes : (1) Absence de stockage de données historiques et de fonctionnalités d'analyse des tendances, (2) Les types d'attente sont regroupés par catégories plutôt qu'affichés individuellement, (3) Certains types d'attente, comme CXPACKET, peuvent ne pas apparaître, (4) Les instantanés ponctuels peuvent ne pas détecter les problèmes transitoires, (5) La surcharge de surveillance peut impacter les serveurs occupés, (6) Absence de mécanisme d'alerte pour la surveillance proactive, et (7) Impossible d'agréger les données provenant de plusieurs serveurs. SQL Server Dans certains cas, complétez le Moniteur d'activité avec des événements étendus, des ensembles de collecte de données ou des outils de surveillance tiers.


À propos de l’auteur

Yuan Sheng est un administrateur de base de données senior (DBA) avec plus de 10 ans d'expérience dans SQL Server Environnements et gestion de bases de données d'entreprise. Il a résolu avec succès des centaines de scénarios de récupération de bases de données dans des organisations du secteur financier, de la santé et de l'industrie manufacturière.

Yuan se spécialise dans SQL Server récupération de base de données, solutions à haute disponibilitéet l'optimisation des performances. Son expérience pratique approfondie comprend la gestion de bases de données multi-téraoctets, la mise en œuvre de groupes de disponibilité Always On et le développement de stratégies automatisées de sauvegarde et de restauration pour les systèmes d'information critiques.

Grâce à son expertise technique et à son approche pratique, Yuan se concentre sur la création de guides complets qui aident les administrateurs de bases de données et les professionnels de l'informatique à résoudre des problèmes complexes. SQL Server défis efficacement. Il se tient au courant des dernières SQL Server les versions et les technologies de base de données en constante évolution de Microsoft, testant régulièrement des scénarios de récupération pour garantir que ses recommandations reflètent les meilleures pratiques du monde réel.

Vous avez des questions sur SQL Server Besoin d'aide pour la récupération de votre base de données ? Yuan vous accueille. commentaires et suggestions pour améliorer ces ressources techniques.

Partage maintenant: