Indicateurs de trace (Transact-SQL)

Les indicateurs de trace permettent de définir temporairement des caractéristiques de serveur spécifiques ou de désactiver un comportement particulier. Par exemple, si l'indicateur de trace 3205 est défini au démarrage d'une instance de SQL Server, la compression matérielle des lecteurs de bandes est désactivée. Les indicateurs de trace servent le plus souvent à diagnostiquer des problèmes de performances et à déboguer des procédures stockées ou des systèmes informatiques complexes.

Le tableau ci-dessous répertorie et décrit les indicateurs de trace disponibles dans SQL Server.

Notes

Il est possible que le comportement des indicateurs de trace ne soit pas pris en charge dans les prochaines versions de SQL Server.

Indicateur de trace

Description

260

Imprime les informations de version relatives aux bibliothèques de liaison dynamique (DLL) des procédures stockées étendues. Pour plus d'informations sur __GetXpVersion(), consultez Création de procédures stockées étendues.

Étendue : globale ou de session

1204

Retourne les ressources et les types de verrous participant à l'interblocage et la commande active affectée.

Étendue : globale uniquement

1211

Désactive l'escalade de verrous en fonction de la sollicitation de la mémoire ou du nombre de verrous. Le Moteur de base de données SQL Server ne promeut aucun verrou de ligne ou de page au rang de verrou de table.

L'utilisation de cet indicateur de trace peut générer un nombre excessif de verrous. Ceci peut entraîner un ralentissement des performances du Moteur de base de données ou provoquer des erreurs de type 1204 (impossible d'allouer la ressource du verrou) pour cause de mémoire insuffisante. Pour plus d'informations, consultez Escalade de verrous (moteur de base de données).

Si les deux indicateurs de trace 1211 et 1224 sont définis, 1211 est prioritaire sur 1224. Toutefois, comme l'indicateur de trace 1211 empêche l'escalade dans chaque cas, même si la mémoire est sollicitée, nous vous recommandons d'utiliser 1224. Cela permet d'éviter les erreurs liées au manque de verrous, lorsque de nombreux verrous sont utilisés.

Étendue : globale ou de session

1222

Retourne les ressources et les types de verrous participant au blocage et la commande active affectée, au format XML n'ayant à être validé par aucun schéma XSD particulier.

Étendue : globale uniquement

1224

Désactive l'escalade de verrous en fonction du nombre de verrous. Cependant, une sollicitation de la mémoire peut toujours activer l'escalade de verrous. Le Moteur de base de données promeut les verrous de ligne ou de page au rang de verrous de table (ou de partition) si l'une des conditions suivantes n'est pas respectée :

  • si la quantité de mémoire utilisée par les objets des verrous excède 40 % de la mémoire utilisée par le Moteur de base de données, à l'exclusion de l'allocation de mémoire par le biais de AWE (Address Windowing Extensions). Ceci s'applique uniquement lorsque le paramètre locks de sp_configure est défini à 0 ;

  • si la quantité de mémoire utilisée par les objets des verrous excède 40 % de la mémoire de verrous configurée à l'aide du paramètre locks de sp_configure. Pour plus d'informations, consultez Définition des options de configuration de serveur.

Si les deux indicateurs de trace 1211 et 1224 sont définis, 1211 est prioritaire sur 1224. Toutefois, comme l'indicateur de trace 1211 empêche l'escalade dans chaque cas, même si la mémoire est sollicitée, nous vous recommandons d'utiliser 1224. Cela permet d'éviter les erreurs liées au manque de verrous, lorsque de nombreux verrous sont utilisés.

RemarqueRemarque
L'escalade de verrous jusqu'à la granularité de niveau table ou HoBT peut également être contrôlée en utilisant l'option LOCK_ESCALATION de l'instruction ALTER TABLE.

Étendue : globale ou de session

2528

Désactive la vérification parallèle des objets par DBCC CHECKDB, DBCC CHECKFILEGROUP et DBCC CHECKTABLE. Par défaut, le degré de parallélisme est déterminé automatiquement par le processeur de requête. Le degré maximum de parallélisme est configuré de la même manière que celui des requêtes parallèles. Pour plus d'informations, consultez Option Degré maximal de parallélisme.

La vérification DBCC parallèle doit généralement rester désactivée. Dans le cas de DBCC CHECKDB, le processeur de requête réévalue et ajuste automatiquement le parallélisme entre chaque table ou traitement de tables vérifiées. Il se peut parfois que la vérification commence lorsque le serveur est quasiment inactif. Un administrateur sachant que la charge doit augmenter avant la fin de la vérification peut réduire ou désactiver manuellement le parallélisme.

Lorsque la vérification parallèle de DBCC est désactivée, celui-ci peut mettre beaucoup plus de temps à s’exécuter. En outre, s’il est exécuté alors que la fonctionnalité TABLOCK est activée et que le parallélisme est désactivé, les tables peuvent être verrouillées pour des durées plus longues.

Étendue : globale ou de session

3205

Par défaut, si une unité sur bande gère la compression matérielle, l'instruction DUMP ou BACKUP en fera usage. Cet indicateur de trace permet de désactiver la compression matérielle pour les unités de sauvegarde sur bande. Cette option peut s'avérer utile lorsque vous souhaitez échanger des bandes avec d'autres sites ou les utiliser avec des unités qui ne gèrent pas la compression.

Étendue : globale ou de session

3226

Par défaut, chaque opération de sauvegarde réussie ajoute une entrée au journal des erreurs SQL Server et au journal des événements système. Si vous créez de fréquentes sauvegardes du fichier journal, ces messages de réussite peuvent rapidement s'accumuler, créer des journaux d'erreurs très volumineux et compliquer la recherche d'autres messages.

Avec cet indicateur de trace, vous pouvez supprimer ces entrées de journal. L'activation de cet indicateur de trace est utile si vous exécutez des sauvegardes de fichiers journaux fréquentes et si aucun de vos scripts ne dépend de ces entrées.

3608

Empêche SQL Server de démarrer et de récupérer automatiquement toute base de données, à l'exception de la base de données MASTER. Les bases de données ne seront démarrées et récupérées qu'en cas d'accès. Certaines fonctionnalités, telles que le niveau d'isolement d'instantané et l'instantané Read Committed, peuvent ne pas fonctionner. S'utilise pour Déplacement des bases de données système et Déplacement des bases de données utilisateur. Ne pas utiliser au cours du fonctionnement normal.

3625

Limite la quantité d'informations retournée aux utilisateurs qui ne sont pas membres du rôle serveur fixe de sysadmin, en masquant les paramètres de certains messages d'erreur à l'aide de « ****** ». Cela peut permettre d'éviter la divulgation d'informations sensibles.

Étendue : globale uniquement

4199

Contrôle plusieurs modifications de l'optimiseur de requête précédemment effectuées sous plusieurs indicateurs de trace. Pour plus d’informations, consultez cet article du Support Microsoft.

Étendue : globale ou de session

4616

Permet aux rôles d'application d'accéder aux métadonnées au niveau du serveur. Dans SQL Server, un rôle d'application ne peut pas accéder à des métadonnées situées en dehors de sa propre base de données car les rôles d'application ne sont pas associés à un principal au niveau serveur. Il s'agit là d'une différence par rapport aux versions antérieures de SQL Server. La définition de cet indicateur global désactive les nouvelles restrictions et permet aux rôles d'application d'accéder aux métadonnées au niveau du serveur.

Étendue : globale uniquement

6527

Désactive la génération d'un vidage de la mémoire sur la première occurrence d'une exception mémoire insuffisante dans l'intégration du CLR. Par défaut, SQL Server génère un petit vidage de la mémoire sur la première occurrence d'une exception mémoire insuffisante dans le CLR. Le comportement de l'indicateur de trace est comme suit :

  • Si cela est utilisé comme indicateur de trace de démarrage, un vidage de mémoire n'est jamais généré. Toutefois, un vidage de la mémoire peut être généré si d'autres indicateurs de trace sont utilisés.

  • Si cet indicateur de trace est activé sur un serveur en exécution, un vidage de la mémoire ne sera pas généré automatiquement à partir de ce point. Toutefois, si un vidage de la mémoire a déjà été généré en raison d'une exception mémoire insuffisante dans le CLR, cet indicateur de trace n'aura aucun effet.

Étendue : globale uniquement

7806

Active une connexion administrateur dédiée (DAC) sur SQL Server Express. Par défaut, aucune ressource DAC n'est réservée sur SQL Server Express. Pour plus d'informations, consultez Utilisation d'une connexion d'administrateur dédiée.

Étendue : globale uniquement

Notes

Dans SQL Server, il existe deux types d'indicateurs de trace : les indicateurs de trace de session et les indicateurs de trace globaux. Les indicateurs de trace de session sont actifs pour une connexion et visibles uniquement pour celle-ci. Les indicateurs de trace globaux sont définis au niveau du serveur et sont visibles pour chaque connexion sur celui-ci. Certains indicateurs ne peuvent être activés qu'en tant qu'indicateurs globaux, tandis que d'autres peuvent être activés avec une étendue globale ou de session.

Les règles suivantes s'appliquent :

  • Un indicateur de trace global doit être activé globalement. Sinon, il est sans effet. Il est recommandé d'activer les indicateurs de trace globaux au démarrage, à l'aide de l'option de ligne de commande -T.

  • Si un indicateur de trace possède une étendue globale ou de session, il peut être activé avec l'étendue appropriée. Un indicateur de trace activé au niveau session n'affecte jamais une autre session et l'effet de l'indicateur de trace est perdu lorsque le SPID qui a ouvert la session se déconnecte.

Les indicateurs de trace s'activent ou se désactivent de l'une des façons suivantes :

  • en utilisant les commandes DBCC TRACEON et DBCC TRACEOFF ;

    Par exemple, DBCC TRACEON 2528 : pour activer l'indicateur de trace globalement, utilisez DBCC TRACEON avec l'argument -1 : DBCC TRACEON (2528, -1). Pour désactiver un indicateur de trace global, utilisez DBCC TRACEOFF avec l'argument -1.

  • En utilisant l'option de démarrage -T pour indiquer que l'indicateur de trace doit être défini au démarrage.

    L'option de démarrage -T active un indicateur de trace au niveau global. Vous ne pouvez pas activer un indicateur de trace de niveau session à l'aide d'une option de démarrage. Pour plus d'informations sur les options de démarrage, consultez Utilisation des options de démarrage du service SQL Server.

Utilisez la commande DBCC TRACESTATUS afin de déterminer quels indicateurs de trace sont actuellement actifs.

Modifications de comportement

Dans SQL Server 2000, une simple commande DBCC TRACEON (1204) permet d'activer l'enregistrement des informations de blocage dans le journal des erreurs. Dans SQL Server 2008, vous devez activer l'indicateur globalement car l'indicateur de niveau session n'est pas visible pour le thread de contrôle de blocage.

Pour plus d'informations sur les modifications de comportement, consultez Changements essentiels apportés aux fonctionnalités du moteur de base de données dans SQL Server 20080 R2.

Exemples

L'exemple suivant active l'indicateur de trace 3205 par le biais de DBCC TRACEON.

DBCC TRACEON (3205,-1)

Historique des modifications

Mise à jour du contenu

Ajout de l'indicateur de trace 4199.