Partager via


Créer une trace (Transact-SQL)

Cette rubrique explique comment utiliser des procédures stockées pour créer une trace.

Pour créer une trace

  1. Exécutez sp_trace_create avec les paramètres requis pour créer une trace. La nouvelle trace sera dans un état arrêté (l’état est 0).

  2. Exécutez sp_trace_setevent avec les paramètres requis pour sélectionner les événements et les colonnes à suivre.

  3. Si vous le souhaitez, exécutez sp_trace_setfilter pour définir n’importe quel ou une combinaison de filtres.

    sp_trace_setevent et sp_trace_setfilter peuvent être exécutés uniquement sur les traces existantes qui sont arrêtées.

    Important

    Contrairement aux procédures stockées régulières, les paramètres de toutes les procédures stockées SQL Server Profiler (sp_trace_xx) sont strictement typés et ne prennent pas en charge la conversion automatique du type de données. Si ces paramètres ne sont pas appelés avec les types de données de paramètre d’entrée corrects, comme spécifié dans la description de l’argument, la procédure stockée retourne une erreur.

Exemple :

Le code suivant illustre la création d’une trace à l’aide de Transact-SQL. Il se trouve dans trois sections : création de la trace, remplissage du fichier de trace et arrêt de la trace. Personnalisez la trace en ajoutant les événements que vous souhaitez tracer. Pour obtenir la liste des événements et des colonnes, consultez sp_trace_setevent (Transact-SQL).

Le code suivant crée une trace, ajoute des événements à la trace, puis démarre la trace :

DECLARE @RC int, @TraceID int, @on BIT  
EXEC @rc = sp_trace_create @TraceID output, 0, N'C:\SampleTrace'  
  
-- Select the return code to see if the trace creation was successful.  
SELECT RC = @RC, TraceID = @TraceID  
  
-- Set the events and data columns you need to capture.  
SELECT @on = 1  
  
-- 10 is RPC:Completed event. 1 is TextData column.   
EXEC sp_trace_setevent @TraceID, 10, 1, @on   
-- 13 is SQL:BatchStarting, 11 is LoginName  
EXEC sp_trace_setevent @TraceID, 13, 11, @on   
-- 13 is SQL:BatchStarting, 14 is StartTime  
EXEC sp_trace_setevent @TraceID, 13, 14, @on   
-- 12 is SQL:BatchCompleted, 15 is EndTime  
EXEC sp_trace_setevent @TraceID, 12, 15, @on   
-- 13 is SQL:BatchStarting, 1 is TextData  
EXEC sp_trace_setevent @TraceID, 13, 1, @on   
  
-- Set any filter. Not provided in this example  
--EXEC sp_trace_setfilter 1, 10, 0, 6, N'%Profiler%'  
  
-- Start Trace (status 1 = start)  
EXEC @RC = sp_trace_setstatus @TraceID, 1  
GO  
  

Exemple :

Maintenant que la trace a été créée et démarrée, exécutez le code suivant pour remplir la trace avec l’activité.

SELECT * FROM master.sys.databases  
GO  
SELECT * FROM ::fn_trace_getinfo(default)  
GO  
  

Exemple :

La trace peut être arrêtée et redémarrée à tout moment. Dans cet exemple, exécutez le code suivant pour arrêter la trace, fermer la trace et supprimer la définition de trace.

DECLARE @TraceID int  
-- Populate a variable with the trace_id of the current trace  
SELECT  @TraceID = TraceID FROM ::fn_trace_getinfo(default) WHERE VALUE = N'C:\SampleTrace.trc'  
  
-- First stop the trace.   
EXEC sp_trace_setstatus @TraceID, 0  
  
-- Close and then delete its definition from SQL Server.   
EXEC sp_trace_setstatus @TraceID, 2  
  

Exemple :

Pour examiner le fichier de trace, ouvrez le fichier SampleTrace.trc à l’aide de SQL Server Profiler.

Voir aussi

Procédures stockées du Générateur de profils SQL Server (Transact-SQL)
sp_trace_create (Transact-SQL)
sp_trace_setevent (Transact-SQL)
sp_trace_setfilter (Transact-SQL)