SQL Server exécute en arrière-plan une trace légère appelée trace par défaut qui enregistre un large éventail d’événements au niveau du serveur : événements d’auto-croissance des bases de données, création et suppression d’objets, échecs de connexion, modifications de configuration du serveur, et bien plus encore. C’est souvent le premier endroit à consulter lors de l’investigation d’un incident qui n’apparaît pas dans le journal des erreurs. Cet article montre comment l’interroger efficacement.
Interroger la trace par défaut
Le chemin du fichier de trace par défaut est stocké dans sys.traces. La fonction sys.fn_trace_gettable lit le ou les fichiers de trace et retourne des lignes. La jointure avec sys.trace_events traduit les codes numériques EventClass en noms d’événements lisibles.
DECLARE @TraceFileName NVARCHAR(512)
-- Étape 1 : Trouver le chemin actif du fichier de trace par défaut
SELECT @TraceFileName = path
FROM sys.traces
WHERE id = 1
-- Étape 2 : Interroger la trace en traduisant les codes EventClass en noms
SELECT
StartTime,
TE.name AS EventClass,
TextData,
HostName,
ApplicationName,
LoginName,
SPID, -- ID de session : utiliser pour des requêtes inputbuffer ultérieures
ObjectName
FROM sys.fn_trace_gettable(@TraceFileName, DEFAULT) TG
LEFT JOIN sys.trace_events TE ON TG.EventClass = TE.trace_event_id
WHERE TE.name IS NOT NULL
ORDER BY StartTime DESC;
Trouver la requête qui a déclenché un événement
Si vous avez besoin de retrouver l’instruction T-SQL qui a causé un événement spécifique — une auto-croissance du journal, un objet supprimé, un échec de connexion — vous pouvez utiliser le SPID de la trace pour vérifier le tampon d’entrée de la session. Mises en garde importantes : les SPIDs sont réutilisés au cours de la durée de vie de l’instance, et le tampon d’entrée est écrasé par les requêtes suivantes.
-- Remplacez [SPID] par l'ID de session issu de la trace
DBCC INPUTBUFFER([SPID]);
Types d’événements disponibles
Tous les événements de la liste ci-dessous ne sont pas enregistrés par la trace par défaut — seul un sous-ensemble est activé par défaut. Si vous avez besoin de capturer des événements absents de la trace par défaut, vous devrez créer une trace personnalisée ou utiliser les Extended Events. Utilisez cette requête pour obtenir la liste complète des IDs et noms d’événements disponibles :
SELECT trace_event_id, name
FROM sys.trace_events
ORDER BY trace_event_id;








