sp_trace_setfilter (Transact-SQL)
Wendet einen Filter auf eine Ablaufverfolgung an. sp_trace_setfilter kann nur für vorhandene beendete Ablaufverfolgungen (status besitzt den Wert 0) ausgeführt werden. SQL Server gibt einen Fehler zurück, wenn diese gespeicherte Prozedur für eine Ablaufverfolgung ausgeführt wird, die nicht vorhanden ist oder bei der status nicht den Wert 0 besitzt.
Syntax
sp_trace_setfilter [ @traceid = ] trace_id
, [ @columnid = ] column_id
, [ @logical_operator = ] logical_operator
, [ @comparison_operator = ] comparison_operator
, [ @value = ] value
Argumente
[ @traceid= ] trace_id
Ist die ID der Ablaufverfolgung, für die der Filter festgelegt wird. trace_id ist ein Wert vom Datentyp int und weist keinen Standardwert auf. Der Benutzer verwendet diesen trace_id -Wert zum Identifizieren, Ändern und Steuern der Ablaufverfolgung.[ @columnid= ] column_id
Ist die ID der Spalte, auf die der Filter angewendet wird. column_id ist ein Wert vom Datentyp int und weist keinen Standardwert auf. Wenn column_id den Wert NULL hat, werden alle Filter für die angegebene Ablaufverfolgung von SQL Server gelöscht.[ @logical_operator = ] logical_operator
Gibt an, ob der AND-Operator (0) oder der OR-Operator (1) angewendet wird. logical_operator ist ein Wert vom Datentyp int und weist keinen Standardwert auf.[ @comparison_operator= ] comparison_operator
Gibt an, welche Art von Vergleich ausgeführt werden soll. comparison_operator ist ein Wert vom Datentyp int und weist keinen Standardwert auf. Die folgende Tabelle enthält die Vergleichsoperatoren und die sie darstellenden Werte.Wert
Vergleichsoperator
0
= (Gleich)
1
<> (Ungleich)
2
> (Größer als)
3
< (Kleiner als)
4
>= (Größer als oder gleich)
5
<= (Kleiner als oder gleich)
6
LIKE
7
NOT LIKE
[ @value= ] value
Gibt den Wert an, nach dem gefiltert werden soll. Der Datentyp von value muss dem Datentyp der zu filternden Spalte entsprechen. Wenn der Filter z. B. für eine Objekt-ID-Spalte festgelegt wird, bei der es sich um einen Wert vom Datentyp int handelt, muss value daher ein Wert vom Datentyp int sein. Wenn value ein Wert vom Datentyp nvarchar oder varbinary ist, beträgt die maximale Länge für den Wert 8.000.Wenn der Vergleichsoperator LIKE oder NOT LIKE ist, kann der logische Operator % oder einen anderen für die LIKE-Operation geeigneten Filter enthalten.
In SQL Server 2005 und höheren Versionen können Sie NULL für value angeben, um Ereignisse mit NULL-Spaltenwerten zu filtern. Nur 0- (= Geich) und 1-Operatoren (<> Ungleich) sind mit NULL zulässig. In diesem Fall entsprechen diese Operatoren den Transact-SQL-Operatoren IS NULL und IS NOT NULL.
Um den Filter auf einen Bereich von Spaltenwerten anzuwenden, muss sp_trace_setfilter zweimal ausgeführt werden: einmal mit dem Vergleichsoperator Größer als oder gleich ('>=') und das zweite Mal mit dem Operator Kleiner als oder gleich ('<=').
Weitere Informationen zu Datentypen für Datenspalten finden Sie unter Ereignisklassen in SQL Server – Referenz.
Rückgabecodewerte
In der folgenden Tabelle werden die Codewerte beschrieben, die die Benutzer möglicherweise nach Abschluss der gespeicherten Prozedur erhalten.
Rückgabecode |
Beschreibung |
---|---|
0 |
Kein Fehler. |
1 |
Unbekannter Fehler. |
2 |
Die Ablaufverfolgung wird derzeit ausgeführt. Wenn die Ablaufverfolgung jetzt geändert wird, hat dies einen Fehler zur Folge. |
4 |
Die angegebene Spalte ist ungültig. |
5 |
Für die angegebene Spalte ist das Filtern nicht zulässig. Dieser Wert wird nur von sp_trace_setfilter zurückgegeben. |
6 |
Der angegebene Vergleichsoperator ist ungültig. |
7 |
Der angegebene logische Operator ist ungültig. |
9 |
Das angegebene Ablaufverfolgungshandle ist ungültig. |
13 |
Nicht genügend Arbeitsspeicher. Wird zurückgegeben, wenn nicht genügend Arbeitsspeicher zum Ausführen der angegebenen Aktion verfügbar ist. |
16 |
Die Funktion ist für diese Ablaufverfolgung ungültig. |
Hinweise
sp_trace_setfilter ist eine gespeicherte Prozedur in SQL Server, die viele der Aktionen ausführt, die zuvor von den erweiterten gespeicherten Prozeduren ausgeführt wurden, die in früheren Versionen von SQL Server zur Verfügung standen. Verwenden Sie sp_trace_setfilter anstelle der erweiterten gespeicherten Prozeduren xp_trace_set*filter, um Filter für Ablaufverfolgungen zu erstellen, anzuwenden, zu entfernen oder zu verändern. Weitere Informationen finden Sie unter Filtern einer Ablaufverfolgung.
Alle Filter für eine bestimmte Spalte müssen zusammen in einer einzigen Ausführung von sp_trace_setfilter aktiviert werden. Wenn ein Benutzer beispielsweise zwei Filter auf die Anwendungsnamenspalte und einen Filter auf die Benutzernamenspalte anwenden möchte, müssen die Filter für den Anwendungsnamen aufeinander folgend angegeben werden. SQL Server gibt einen Fehler zurück, wenn der Benutzer versucht, einen Filter für den Anwendungsnamen in einem Aufruf einer gespeicherten Prozedur anzugeben, auf den ein Filter für den Benutzernamen und dann wiederum ein Filter für den Anwendungsnamen folgt.
Parameter aller gespeicherten Prozeduren der SQL-Ablaufverfolgung (sp_trace_xx) weisen eine strikte Typbindung auf. 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.
Berechtigungen
Benutzer müssen über die ALTER TRACE-Berechtigung verfügen.
Beispiele
Im folgenden Beispiel werden drei Filter für die Ablaufverfolgung 1 festgelegt. Die Filter N'SQLT%' und N'MS%' werden mithilfe des Vergleichsoperators "LIKE" für eine Spalte (AppName, Wert 10) verwendet. Der N'joe'-Filter wird mithilfe des Vergleichsoperators "EQUAL" für eine andere Spalte (UserName, Wert 11) verwendet.
sp_trace_setfilter 1, 10, 0, 6, N'SQLT%'
sp_trace_setfilter 1, 10, 0, 6, N'MS%'
sp_trace_setfilter 1, 11, 0, 0, N'joe'
Siehe auch