Erstellen einer Ablaufverfolgung (Transact-SQL)Create a Trace (Transact-SQL)

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions)

In diesem Thema werden Vorgehensweisen zum Verwenden gespeicherter Prozeduren zum Erstellen einer Ablaufverfolgung beschrieben.This topic describes how to use stored procedures to create a trace.

So erstellen Sie eine AblaufverfolgungTo create a trace

  1. Führen Sie sp_trace_create mit den notwendigen Parametern aus, um eine neue Ablaufverfolgung zu erstellen.Execute sp_trace_create with the required parameters to create a new trace. Der Status der neuen Ablaufverfolgung besagt, dass sie beendet ist ( Status ist 0 ).The new trace will be in a stopped state ( status is 0 ).

  2. Führen Sie sp_trace_setevent mit den notwendigen Parametern aus, um die zu verfolgenden Ereignisse und Spalten auszuwählen.Execute sp_trace_setevent with the required parameters to select the events and columns to trace.

  3. Führen Sie wahlweise sp_trace_setfilter aus, um beliebige Filter oder eine Kombination aus Filtern festzulegen.Optionally, execute sp_trace_setfilter to set any or a combination of filters.

    sp_trace_setevent und sp_trace_setfilter können nur für vorhandene, beendete Ablaufverfolgungen ausgeführt werden.sp_trace_setevent and sp_trace_setfilter can be executed only on existing traces that are stopped.

    Wichtig

    Im Gegensatz zu regulären gespeicherten Prozeduren werden die Parameter für alle gespeicherten Prozeduren von SQL Server Profiler ( sp_trace_ xx) genau eingegeben und unterstützen die automatische Datentypkonvertierung nicht.Unlike regular stored procedures, parameters of all SQL Server Profiler stored procedures ( sp_trace_ xx) are strictly typed and do not support automatic data type conversion. Wenn diese Parameter nicht mit den richtigen Datentypen für Eingabeparameter aufgerufen werden, wie in der Argumentbeschreibung angegeben, gibt die gespeicherte Prozedur einen Fehler zurück.If these parameters are not called with the correct input parameter data types, as specified in the argument description, the stored procedure returns an error.

BeispieleExamples

Im folgenden Code wird das Erstellen einer Ablaufverfolgung mit Transact-SQLTransact-SQLveranschaulicht.The following code demonstrates creating a trace using Transact-SQLTransact-SQL. Der Code ist in drei Abschnitte unterteilt: Erstellen der Ablaufverfolgung, Auffüllen der Ablaufverfolgungsdatei und Beenden der Ablaufverfolgung.It is in three sections: creating the trace, populating the trace file, and stopping the trace. Passen Sie die Ablaufverfolgung an, indem Sie die Ereignisse hinzufügen, die Sie aufzeichnen möchten.Customize the trace by adding the events that you want to trace. Die Liste der Ereignisse und Spalten finden Sie unter sp_trace_setevent (Transact-SQL)veranschaulicht.For the list of events and columns, see sp_trace_setevent (Transact-SQL).

A.A. Erstellen einer AblaufverfolgungCreate a trace

Mit dem folgenden Code wird eine Ablaufverfolgung erstellt, anschließend werden dieser Ereignisse hinzugefügt, und sie wird gestartet.The following code creates a trace, adds events to the trace, and then starts the 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  
  

B.B. Auffüllen der AblaufverfolgungsdateiPopulate the trace file

Nachdem nun die Ablaufverfolgung erstellt und gestartet worden ist, führen Sie den folgenden Code aus, um die Ablaufverfolgung mit Aktivität aufzufüllen.Now that the trace has been created and started, execute the following code to populate the trace with activity.

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

C.C. Beenden Sie die AblaufverfolgungStop the trace

Die Ablaufverfolgung kann jederzeit beendet und neu gestartet werden.The trace can be stopped and restarted at any time. Führen Sie in diesem Beispiel den folgenden Code aus, um die Ablaufverfolgung zu beenden und zu schließen und die Ablaufverfolgungsdefinition zu löschen.In this example, execute the following code to stop the trace, close the trace, and delete the trace definition.

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  
  

D:D. Überprüfen der AblaufverfolgungsdateiExamine the trace file

Öffnen Sie zum Untersuchen der Ablaufverfolgungsdatei die Datei SampleTrace.trc mit SQL Server ProfilerSQL Server Profiler.To examine the trace file, open the SampleTrace.trc file using SQL Server ProfilerSQL Server Profiler.

Weitere InformationenSee Also

Gespeicherte Prozeduren von SQL Server Profiler (SQL Server Profiler) SQL Server Profiler Stored Procedures (Transact-SQL)
sp_trace_create (Transact-SQL) sp_trace_create (Transact-SQL)
sp_trace_setevent (Transact-SQL) sp_trace_setevent (Transact-SQL)
sp_trace_setfilter (Transact-SQL)sp_trace_setfilter (Transact-SQL)