Trace des requêtes SQL Server 

Introduction

Cet outil est accessible depuis n’importe quel écran du progiciel dès lors que la base de données utilisée est SQL Server™, via le menu Outils situé en haut de l’écran, qui contient les deux choix suivants :

Activation trace SQL Server

Cette fonction permet via la fonctionnalité de trace sous SQL Server, d'activer l'enregistrement d'évènements sur la base dans un fichier, événements qui pourront ensuite être analysés.

Désactivation trace

Cette fonction lance le retraitement du fichier de trace obtenu par l'activation puis la visualisation du résultat. Ceci permet de visualiser toutes les actions SQL exécutés durant l'activation.

Pré-requis

Habilitation

L’utilisateur doit être autorisé à utiliser le débogueur (paramètre DBG).

Contrainte technique

La fonction ne peut fonctionner que si un serveur de traitement est installé et est actif sur la machine de la base de données.

Interface utilisateur

Lorsque l’on lance la fonction, un écran permet de saisir un ensemble d’options :

Récupération des résultats

Il faut indiquer quelles informations vont être collectées pour analyse.

L'option Standard permet de récupérer les plans d'exécution des requêtes

L'option Tuning permet de récupérer des informations sur les actions SQL exécutées ainsi que les plans d'exécution des requêtes.

L'utilisateur peut aussi choisir lui-même les évènements à collecter par "Paramétrage évènements avancé". La fenêtre correspondante lui permettra de choisir toutes les options possibles.

Ces évènements sont regroupés par type. Pour plus d'informations sur les évènements, on se reportera à la documentation Sql Server, dont on trouvera un extrait en annexe.

Options de tri

Par défaut les ordres SQL sont détaillés par ordre chronologique mais il est possible de préciser des options de tri.

Plusieurs propositions de tri sont proposées et on retrouvera en premier les ordres correspondant au coût le plus important selon le tri demandé.

Présentation des résultats

L'utilisateur peut choisir de ne lister que les n premiers enregistrements ramenés.

Dans le cas où il a choisit un tri, il obtiendra les n premiers évènements passés sur la base de données qui correspondent au coût le plus important de ce tri.

Utilisation de la trace obtenue

On pourra regarder la durée (duration) obtenue lors de l'exécution des requêtes et actions SQL (obtenue sur evènement "Completed")

Lorsqu'on obtiendra un coût sur ces actions, on pourra regarder si la requête est performante, si elle utilise bien les index

il ne faudrait pas trouver de Table Scan

il ne faudrait pas trouver de Constant Scan

Lorsqu'on trouve l'utilisation d'un index (Index Seek), il faut vérifier que l'on utilise au maximum les colonnes de l'index (dans la partie "SEEK:")

Extrait de la documentation SQL Server

Ce tableau répertorie les événements qui peuvent être ajoutés ou supprimés d'une trace.

Numéro de l'événement


Nom de l'événement


Description

0-9

Reserved

 

10

RPC:Completed

Se produit lorsqu'un appel de procédure distante (RPC) s'est terminé.

11

RPC:Starting

Se produit lorsqu'un appel de procédure distante a commencé.

12

SQL:BatchCompleted

Se produit lorsqu'un lot d'instructions Transact-SQL est terminé.

13

SQL:BatchStarting

Se produit lorsqu'un lot d'instructions Transact-SQL a démarré.

14

Login

Se produit lorsqu'un utilisateur réussit à se connecter à SQL Server.

15

Logout

Se produit lorsqu'un utilisateur se déconnecte de SQL Server.

16

Attention

Se produit en même temps que les événements d'avertissement, tels que les requêtes d'interruption du client ou les ruptures de connexion client.

17

ExistingConnection

Détecte toutes les activités des utilisateurs connectés à SQL Server avant le démarrage de la trace.

18

ServiceControl

Se produit lorsque l'état des services de SQL Server est modifié.

19

DTCTransaction

Trace les transactions coordonnées par Microsoft Distributed Transaction Coordinator (MS DTC) entre deux ou plusieurs bases de données.

20

Login Failed

Indique qu'une tentative de connexion à SQL Server depuis un client a échoué.

21

EventLog

Indique que les événements ont été consignés dans le journal des applications de Microsoft Windows NT®.

22

ErrorLog

Indique que des événements d'erreur sont consignées dans le journal d'erreurs de SQL Server.

23

Lock:Release

Indique qu'un verrou sur une ressource, une page par exemple, a été débloqué.

24

Lock:Acquire

Indique qu'un verrou a été acquis sur une ressource, une page de données par exemple.

25

Lock:Deadlock

Indique que deux transactions concurrentes ont généré un interblocage, l'une essayant d'obtenir des verrous incompatibles sur des ressources appartenant à l'autre.

26

Lock:Canceled

Indique que l'acquisition d'un verrou sur une ressource a été annulée (par exemple à cause d'un interblocage).

27

Lock:Timeout

Indique qu'une demande de verrou sur une ressource (par exemple une page) a dépassé le délai d'attente parce qu'une autre transaction retient un verrou bloquant sur la ressource requise. Le délai d'attente est déterminé par la fonction @@LOCK_TIMEOUT et peut être défini à l'aide de l'instruction SET LOCK_TIMEOUT.

28

DOP Event

Se produit avant l'exécution d'une instruction SELECT, INSERT ou UPDATE.

29-31

Reserved

Utilisez plutôt l'événement 28.

32

Reserved

 

33

Exception

Indique qu'une exception s'est produite dans SQL Server.

34

SP:CacheMiss

Indique qu'une procédure stockée est introuvable dans le cache de procédure.

35

SP:CacheInsert

Indique qu'un élément est inséré dans le cache de procédure.

36

SP:CacheRemove

Indique qu'un élément est supprimé du cache de procédure.

37

SP:Recompile

Indique qu'une procédure stockée a été recompilée.

38

SP:CacheHit

Indique qu'une procédure stockée est trouvée dans le cache de procédure.

39

SP:ExecContextHit

Indique quand la version d'exécution d'une procédure stockée a été trouvée dans le cache.

40

SQL:StmtStarting

Se produit lorsque l'instruction Transact-SQL a démarré.

41

SQL:StmtCompleted

Se produit lors de la fin de l'instruction Transact-SQL.

42

SP:Starting

Indique que la procédure stockée a démarré.

43

SP:Completed

Indique que la procédure stockée s'est terminée.

44

Reserved

Utilisez plutôt l'événement 40.

45

Reserved

Utilisez plutôt l'événement 41.

46

Objetct:Created

Indique qu'un objet a été créé, par exemple avec les instructions CREATE INDEX, CREATE TABLE et CREATE DATABASE.

47

Objetct:Deleted

Indique qu'un objet a été supprimé, par exemple avec les instructions DROP INDEX et DROP TABLE.

48

Reserved

 

49

Reserved

 

50

SQL Transaction

Trace les instructions Transact-SQL BEGIN, COMMIT, SAVE et ROLLBACK TRANSACTION.

51

Scan:Started

Indique qu'une analyse de table ou d'index a démarré.

52

Scan:Stopped

Indique qu'une analyse de table ou d'index s'est terminée.

53

CursorOpen

Indique qu'un curseur est ouvert dans une instruction Transact-SQL par ODBC, OLE DB ou DB-Library.

54

Transaction Log

Trace à quel moment les transactions sont écrites dans le journal des transactions.

55

HashWarning

Indique qu'une opération de hachage (jointure hachée, agrégation hachée, union hachée, hachage distinct) qui n'est pas en cours sur un tampon de partition bascule vers un plan de rechange. Ceci se produit à cause de la profondeur de récurrence, du décalage des données, des indicateurs de trace ou du comptage des bits.

56-57

Reserved

 

58

Auto Update Stats

Indique qu'une mise à jour automatique des statistiques d'index a eu lieu.

59

Lock:Deadlock Chain

Produit pour chacun des événements entraînant le blocage.

60

Lock:Escalation

Se produit lorsque l'étendue des verrous est accrue. Exemple : verrou de ligne augmenté ou converti en verrou de page.

61

OLE DB Errors

Indique qu'une erreur OLE DB s'est produite.

62-66

Reserved

 

67

ExecutionWarnings

Indique les messages d'avertissement survenus lors de l'exécution d'une instruction ou d'une procédure stockée SQL Server.

68

Execution Plan

Affiche l'arborescence du plan de l'instruction SQL exécutée.

69

Sort Warnings

Indique les opérations de tri ne pouvant pas être effectuées en mémoire. N'inclut pas les opérations de tri comprenant la création d'index, seulement les opérations de tri au sein d'une requête (une clause ORDER BY dans une commande SELECT, par exemple).

70

CursorPrepare

Indique qu'un curseur dans une instruction Transact-SQL est préparé pour être utilisé par ODBC, OLE DB ou DB-Library.

71

Prepare SQL

ODBC, OLE DB ou DB-Library a préparé une ou plusieurs instructions Transact-SQL à utiliser.

72

Exec Prepared SQL

ODBC, OLE DB ou DB-Library a exécuté une ou plusieurs instructions préparées Transact-SQL.

73

Unprepare SQL

ODBC, OLE DB ou DB-Library a annulé une ou des instructions Transact-SQL préparées.

74

CursorExecute

Un curseur précédemment préparé dans une instruction Transact-SQL par ODBC, OLE DB ou DB-Library est exécuté.

75

CursorRecompile

Un curseur ouvert dans une instruction Transact-SQL par ODBC ou DB-Library a été recompilé soit directement, soit du fait d'un changement de schéma.

Déclenché pour les curseurs ANSI et non-ANSI.

76

CursorImplicitConversion

Un curseur dans une instruction Transact-SQL est converti par SQL Server d'un type à un autre.

Déclenché pour les curseurs ANSI et non-ANSI.

77

CursorUnprepare

Un curseur préparé dans une instruction Transact-SQL est annulé par ODBC, OLE DB ou DB-Library.

78

CursorClose

Un curseur précédemment ouvert dans une instruction Transact-SQL par ODBC, OLE DB ou DB-Library est fermé.

79

Missing Column Statistics

Des statistiques de colonne qui auraient pu être utiles pour l'optimiseur ne sont pas disponibles.

80

Missing Join Predicate

Une requête sans prédicat de jointure est en cours d'exécution. Ceci peut rendre la requête longue à exécuter.

81

Server Memory Change

L'utilisation de la mémoire de Microsoft SQL Server a augmenté ou diminué, soit de 1 méga-octet (Mo), soit de 5% de la taille maximale de la mémoire, selon celle qui est la plus grande.

82-91

User Configurable (0 -9)

Données d'événements définies par l'utilisateur.

92

Data File Auto Grow

Indique qu'un fichier journal a été augmenté automatiquement par le serveur.

93

Log File Auto Grow

Indique qu'un fichier journal a été augmenté automatiquement par le serveur.

94

Data File Auto Shrink

Indique qu'un fichier de données a été réduit automatiquement par le serveur.

95

Log File Auto Shrink

Indique qu'un fichier journal a été réduit automatiquement par le serveur.

96

Show Plan Text

Affiche l'arborescence du plan de requête de l'instruction SQL à partir de l'optimiseur de requête.

97

Show Plan ALL

Affiche le plan de requête avec les détails complets de la compilation de l'instruction SQL en cours d'exécution.

98

Show Plan Statistics

Affiche le plan de requête avec les détails complets de l'exécution de l'instruction SQL en cours.

99

Reserved

 

100

RPC Output Parameter

Produit les valeurs de sortie des paramètres pour tous les RPC.

101

Reserved

 

102

Audit Statement GDR

Se produit chaque fois que GRANT, DENY ou REVOKE sont émis par un utilisateur pour une autorisation d'instruction dans SQL Server.

103

Audit Object GDR

Se produit chaque fois que GRANT, DENY ou REVOKE sont émis par un utilisateur pour une autorisation d'objet dans SQL Server.

104

Audit Add/Drop Login

Se produit lorsqu'une connexion d'accès SQL Server est ajoutée ou supprimée ; pour sp_addlogin et sp_droplogin.

105

Audit Login GDR

Se produit lorsqu'un droit de connexion Microsoft Windows® est ajouté ou supprimé ; pour sp_grantlogin, sp_revokelogin et sp_denylogin.

106

Audit Login Change Property

Se produit lorsqu'une propriété d'une connexion d'accès, sauf pour les mots de passe, est modifiée ; pour sp_defaultdb et sp_defaultlanguage.

107

Audit Login Change Password

Se produit lorsque le mot de passe d'une connexion d'accès SQL Server est modifié.

Les mots de passe ne sont pas enregistrés.

108

Audit Add Login to Server Role

Se produit lorsqu'une connexion d'accès est ajoutée ou supprimée d'un rôle de serveur fixe ; pour sp_addsrvrolemember et sp_dropsrvrolemember.

109

Audit Add DB User

Se produit lorsqu'une connexion d'accès est ajoutée ou supprimée sous forme d'utilisateur de base de données (Windows ou SQL Server) dans une base de données ; pour sp_grantdbaccess, sp_revokedbaccess, sp_adduser et sp_dropuser.

110

Audit Add Member to DB

Se produit lorsqu'une connexion d'accès est ajoutée ou supprimée sous forme d'utilisateur de base de données (fixe ou défini par l'utilisateur) dans une base de données ; pour sp_addrolemember, sp_droprolemember et sp_changegroup.

111

Audit Add/Drop Role

Se produit lorsqu'une connexion d'accès est ajoutée ou supprimée sous forme d'utilisateur de base de données dans une base de données ; pour sp_addrole et sp_droprole.

112

App Role Pass Change

Se produit lorsque le mot de passe d'un rôle d'application est modifié.

113

Audit Statement Permission

Se produit lorsqu'une autorisation d'instruction (par exemple, CREATE TABLE) est utilisée.

114

Audit Object Permission

Se produit lorsqu'une autorisation d'objet (par exemple, SELECT) est utilisée, de manière réussie ou non.

115

Audit Backup/Restore

Se produit lorsqu'une commande BACKUP ou RESTORE est émise.

116

Audit DBCC

Se produit lorsque des commandes DBCC sont émises.

117

Audit Change Audit

Se produit lorsque des modifications de trace d'audit sont effectuées.

118

Audit Object Derived Permission

Se produit à l'émission de commandes d'objets CREATE, ALTER et DROP.

Erreurs

Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :

"Erreur lors de l'accès au serveur de la base de données"

L'accès à la machine de la base de données n'est pas possible, il n'y a pas de serveur de traitement ou il n'est pas démarré

"Erreur d'accès au répertoire des traces de la base de données"

Le répertoire indiqué comme répertoire des traces n'est pas accessible