Trace SQL

Dans la trace SQL, les événements sont collectés si ce sont des instances de classes d'événements répertoriées dans la définition de la trace. Ces événements peuvent être extraits de la trace par filtrage ou placés dans la file d'attente de leur destination. La destination peut être un fichier ou des objets SMO (SQL Server Management Object), qui peuvent utiliser les informations de la trace dans les applications gérant SQL Server.

Important

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez plutôt des événements étendus.

Avantages de Trace SQL

Microsoft SQL Server fournit des procédures stockées système Transact-SQL pour créer des traces sur une instance du Moteur de base de données SQL Server. Ces procédures stockées système permettent, à partir de vos propres applications, de créer des traces manuellement au lieu d'utiliser le SQL Server Profiler. Vous pouvez ainsi écrire des applications personnalisées spécifiques des besoins de votre entreprise.

Architecture de Trace SQL

Les sources d'événement peuvent être n'importe quelle source produisant l'événement de trace, telle que des traitements Transact-SQL, ou bien des événements SQL Server, comme des blocages par exemple. Pour plus d'informations sur les événements, consultez Référence de classe d'événements SQL Server. Dès qu'un événement se produit, si la classe d'événements a été incluse dans une définition de trace, les informations relatives à l'événement sont collectées par la trace. Si des filtres ont été définis pour la classe d'événements dans la définition de la trace, ils sont appliqués et les informations relatives aux événements de la trace sont transmises à une file d'attente. À partir de la file d'attente, les informations de la trace sont écrites dans un fichier ou peuvent être utilisées par un objet SMO dans des applications telles que le SQL Server Profiler. Le schéma suivant montre comment la trace SQL collecte les événements lors d'un traçage.

Processus de suivi d'événements du moteur de base de données

Terminologie associée à Trace SQL

Les termes suivants décrivent les concepts fondamentaux de Trace SQL.

  • Événement
    Action survenue dans une instance de Moteur de base de données SQL Server Microsoft.

  • Colonne de données
    Attribut d'un événement.

  • Classe d'événements
    Type d'événement pouvant être tracé. La classe d'événements contient toutes les colonnes de données qu'un événement peut signaler.

  • Catégorie d'événement
    Groupe de classes d'événements liées.

  • Trace (nom)
    Collection d'événements et de données retournés par le Moteur de base de données.

  • Trace (verbe)
    Recueillir et surveiller les événements d'une instance de SQL Server.

  • Définitiond'une trace
    Collection de classes d'événements, de colonnes de données et de filtres qui identifient les types d'événements à recueillir pendant une trace.

  • Filtre
    Critères qui limitent les événements recueillis dans la trace.

  • Fichier de trace
    Fichier créé lors de l'enregistrement d'une trace.

  • Modèle
    Dans le SQL Server Profiler, fichier définissant les classes d'événements et les colonnes de données à recueillir dans la trace.

  • Table de trace
    Dans SQL Server Profiler, table créée lorsqu'une trace est enregistrée dans une table.

Utiliser des colonnes de données pour décrire les événements renvoyés

La trace SQL utilise les colonnes de données du résultat de la trace pour décrire les événements qui sont renvoyés lors de son exécution. Le tableau suivant décrit les colonnes de données de SQL Server Profiler, qui sont les mêmes que celles utilisées par la trace SQL, et indique les colonnes sélectionnées par défaut.

Colonne de données

Numéro de colonne

Description

ApplicationName 1

10

Nom de l'application cliente qui a créé la connexion à une instance de SQL Server. Cette colonne est remplie des valeurs transmises par l'application et non pas du nom du programme.

BigintData1

52

Valeur (type de données bigint), qui dépend de la classe d'événements spécifiée dans la trace.

BigintData2

53

Valeur (type de données bigint), qui dépend de la classe d'événements spécifiée dans la trace.

Données binaires

2

Valeur binaire qui dépend de la classe d'événements capturée dans la trace.

ClientProcessID 1

9

ID affecté par l'ordinateur hôte au processus dans lequel s'exécute l'application cliente. Cette colonne de données est remplie si l'ID du processus de client est fourni par le client.

ColumnPermissions

44

Indique si une autorisation au niveau de la colonne a été définie. Vous pouvez analyser le texte de l'instruction pour déterminer quelles autorisations ont été appliquées à quelles colonnes.

CPU

18

Temps processeur (en millisecondes) utilisé par l'événement.

Database ID 1

3

ID de la base de données spécifiée par l'instruction USE database_name ou celui de la base de données par défaut si aucune instruction USE database_name n'a été spécifiée pour une instance donnée. Le SQL Server Profiler affiche le nom de la base de données si la colonne de données Nom du serveur est capturée dans la trace et que le serveur est disponible. Détermine la valeur pour une base de données à l'aide de la fonction DB_ID.

DatabaseName

35

Nom de la base de données dans laquelle l'instruction de l'utilisateur est exécutée.

DBUserName 1

40

Nom d'utilisateur SQL Server du client.

Duration

13

Durée (en microsecondes) de l'événement.

[!REMARQUE]

Dans SQL Server 2005 ou version ultérieure, le serveur signale la durée d'un événement en microsecondes (un millionième, ou 10-6, de seconde) et le temps UC utilisé par l'événement en millisecondes (un millième, ou 10-3, de seconde). Dans SQL Server 2005 ou version ultérieure, l'interface utilisateur graphique de SQL Server Profiler affiche par défaut la colonne Durée en millisecondes. Cependant, quand la trace est enregistrée dans un fichier ou une table de base de données, la valeur de la colonne Durée est mentionnée en microsecondes.

EndTime

15

Heure de fin de l'événement. Cette colonne n'est pas remplie pour les classes d'événements faisant référence au démarrage d'un événement, comme par exemple SQL:BatchStarting ou SP:Starting.

Error

31

Numéro d'erreur d'un événement donné. Il s'agit souvent du numéro d'erreur stocké dans sysmessages.

EventClass 1

27

Type de classe d'événements capturée.

EventSequence

51

Numéro de séquence de cet événement.

EventSubClass 1

21

Type de sous-classe d'événements, qui fournit des informations complémentaires concernant chaque classe d'événements. Par exemple, les valeurs de sous-classe d'événements pour la classe d'événements Execution Warning représentent le type d'avertissement pour l'exécution :

1 = Attente de requête. La requête doit attendre les ressources (telles que la mémoire) pour s'exécuter.

2 = Expiration du délai d'attente de requête. La requête a dépassé le délai d'attente d'obtention des ressources nécessaires pour s'exécuter. Cette colonne de données n'est pas remplie pour toutes les classes d'événements.

GUID

54

Valeur de type GUID qui dépend de la classe d'événements spécifiée dans la trace.

FileName

36

Nom logique du fichier modifié.

Handle

33

Entier utilisé par ODBC, OLE DB ou DB-Library pour coordonner l'exécution du serveur.

HostName 1

8

Nom de l'ordinateur sur lequel le client est exécuté. Cette colonne de données est remplie si le nom d'hôte est fourni par le client. Pour déterminer le nom de l'hôte, utilisez la fonction HOST_NAME.

IndexID

24

ID d'index de l'objet affecté par l'événement. Pour déterminer l'ID d'index d'un objet, utilisez la colonne indid de la table système sysindexes.

IntegerData

25

Valeur entière qui dépend de la classe d'événements capturée dans la trace.

IntegerData2

55

Valeur entière qui dépend de la classe d'événements capturée dans la trace.

IsSystem

60

Indique si l'événement s'est produit sur un processus système ou sur un processus utilisateur :

1 = système

0 = utilisateur

LineNumber

5

Indique le numéro de la ligne qui contient l'erreur. Pour les événements qui impliquent des instructions Transact-SQL, comme SP:StmtStarting, la colonne LineNumber contient le numéro de ligne de l'instruction dans la procédure stockée ou le lot.

LinkedServerName

45

Nom du serveur lié.

LoginName

11

Nom de la connexion de l'utilisateur (soit la connexion de sécurité SQL Server, soit les informations d'identification de connexion Windows sous la forme DOMAINE\Nom_utilisateur).

LoginSid 1

41

Numéro d'identification de sécurité (SID) de l'utilisateur connecté. Ces informations se trouvent dans la vue sys.server_principals de la base de données master. Chaque connexion au serveur a un ID unique.

MethodName

47

Nom de la méthode OLE DB.

Mode

32

Entier utilisé par différents événements pour décrire un état que l'événement demande ou a reçu.

NestLevel

29

Entier représentant les données retournées par @@NESTLEVEL.

NTDomainName 1

7

Domaine Microsoft Windows auquel appartient l'utilisateur.

NTUserName 1

6

Nom d'utilisateur Windows.

ObjectID

22

ID affecté à l'objet par le système.

ObjectID2

56

ID de l'objet ou de l'entité associé, s'il est disponible.

ObjectName

34

Nom de l'objet référencé.

ObjectType 2

28

Valeur représentant le type de l'objet impliqué dans l'événement. Cette valeur correspond à la colonne de type dans sysobjects.

Offset

61

Décalage de départ de l'instruction dans la procédure stockée ou le traitement.

OwnerID

58

Utilisé pour les événements de verrou uniquement. Type de l'objet qui possède un verrou.

OwnerName

37

Nom d'utilisateur de base de données du propriétaire de l'objet.

ParentName

59

Nom du schéma qui contient l'objet.

Permissions

19

Valeur entière représentant le type d'autorisations vérifiées. Valeurs possibles :

1 = SELECT ALL

2 = UPDATE ALL

= REFERENCES ALL

8 = INSERT

16 = DELETE

32 = EXECUTE (procédures uniquement)

4 096 = SELECT ANY (au moins une colonne)

8 192 = UPDATE ANY

16 384 = REFERENCES ANY

ProviderName

46

Nom du fournisseur OLE DB.

Reads

16

Nombre d'opérations de lecture sur le disque logique effectuées par le serveur pour l'événement. Ces opérations de lecture comprennent toutes les lectures des tables et des tampons pendant l'exécution de l'instruction.

RequestID

49

ID de la demande contenant l'instruction.

RoleName

38

Nom du rôle d'application activé.

RowCounts

48

Nombre de lignes du traitement.

ServerName 1

26

Nom de l'instance de SQL Server tracée.

SessionLoginName

64

Nom de connexion de l'utilisateur à l'origine de la session. Par exemple, si vous vous connectez à SQL Server à l'aide de Connexion1 et exécutez une instruction en tant que Connexion2, SessionLoginName affiche Connexion1, tandis que LoginName affiche Connexion2. Cette colonne de données affiche les connexions SQL Server et Windows.

Severity

20

Niveau de gravité de l'événement d'exception.

SourceDatabaseID

62

ID de la base de données contenant la source de l'objet.

SPID

12

ID de processus serveur (SPID) affecté par SQL Server au processus associé au client.

SqlHandle

63

Hachage 64 bits basé sur le texte d'une requête ad hoc ou sur l'ID de base de données et d'objet d'un objet SQL. Cette valeur peut être transmise à sys.dm_exec_sql_text() pour extraire le texte SQL associé.

StartTime 1

14

Heure de début de l'événement, si elle est connue.

État

30

Code d'état d'erreur.

Success

23

Indique si l'événement a réussi. Ces valeurs comprennent :

1 = Réussite.

0 = Échec

Par exemple, 1 signifie la réussite de la vérification d'autorisations et 0 l'échec de cette vérification.

TargetLoginName

42

Pour les actions qui ciblent une connexion, nom de la connexion ciblée, par exemple pour ajouter une nouvelle connexion.

TargetLoginSid

43

Pour les actions qui ciblent une connexion, SID de la connexion ciblée, par exemple pour ajouter une nouvelle connexion.

TargetUserName

39

Pour les actions qui ciblent un utilisateur de base de données, nom de cet utilisateur, par exemple pour accorder une autorisation à un utilisateur.

TextData

1

Valeur de texte qui dépend de la classe d'événements capturée dans la trace. Néanmoins, si vous tracez une requête paramétrable, les variables ne sont pas affichées avec les valeurs de données dans la colonne TextData.

ID de la transaction

4

ID affecté à la transaction par le système.

Type

57

Valeur entière qui dépend de la classe d'événements capturée dans la trace.

Writes

17

Nombre d'opérations d'écriture sur le disque physique effectuées par le serveur pour l'événement.

XactSequence

50

Jeton utilisé pour décrire la transaction active.

1 Ces colonnes de données sont remplies par défaut pour tous les événements.

2 Pour plus d'informations sur les colonnes de données ObjectType, consultez Colonne d'événements de trace ObjectType.

Tâches de la trace SQL

Description de la tâche

Rubrique

Explique comment créer et exécuter des traces à l'aide de procédures stockées Transact-SQL.

Créer et exécuter des traces à l'aide de procédures stockées Transact-SQL.

Explique comment créer des traces manuelles à l'aide de procédures stockées sur une instance du Moteur de base de données SQL Server.

Créer des traces manuelles à l'aide de procédures stockées

Explique comment enregistrer les résultats de trace dans le fichier où les résultats de trace sont écrits.

Enregistrer les résultats de trace dans un fichier

Explique comment améliorer l'accès aux données de trace à l'aide de l'espace disponible dans le répertoire temp.

Améliorer l'accès aux données de trace

Explique comment utiliser des procédures stockées pour créer une trace.

Créer une trace (Transact-SQL)

Explique comment utiliser des procédures stockées pour créer un filtre qui n'extrait que les informations requises lors d'un événement en cours de traçage.

Définir un filtre de trace (Transact-SQL)

Explique comment utiliser des procédures stockées pour modifier une trace existante.

Modifier une trace existante (Transact-SQL)

Explique comment utiliser des fonctions intégrées pour afficher une trace enregistrée.

Afficher une trace enregistrée (Transact-SQL)

Explique comment utiliser les fonctions intégrées pour afficher les informations de filtrage de traces.

Afficher des informations de filtrage (Transact-SQL)

Explique comment utiliser des procédures stockées pour supprimer une trace.

Supprimer une trace (Transact-SQL)

Explique comment limiter la baisse de performances induite par une trace.

Optimiser Trace SQL

Explique comment filtrer une trace pour réduire la charge qui est générée pendant une trace.

Filtrer une trace

Explique comment réduire la quantité de données collectées par la trace.

Limiter les tailles de fichier et de table de trace

Décrit les deux façons de planifier le traçage dans Microsoft SQL Server.

Planifier les traces

Voir aussi

Autres ressources

Modèles et autorisations du générateur de SQL Server Profiler

Guide de programmation SMO (SQL Server Management Objects)