sp_trace_setfilter (Transact-SQL)
Gilt für: SQL Server
Wendet einen Filter auf eine Ablaufverfolgung an. sp_trace_setfilter
kann nur für vorhandene Ablaufverfolgungen ausgeführt werden, die beendet werden (@status ist 0
). SQL Server gibt einen Fehler zurück, wenn diese gespeicherte Prozedur auf einer nicht vorhandenen Ablaufverfolgung ausgeführt wird oder deren @status nicht 0
vorhanden ist.
Wichtig
Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verwenden Sie stattdessen erweiterte Ereignisse.
Transact-SQL-Syntaxkonventionen
Syntax
sp_trace_setfilter
[ @traceid = ] traceid
, [ @columnid = ] columnid
, [ @logical_operator = ] logical_operator
, [ @comparison_operator = ] comparison_operator
, [ @value = ] value
[ ; ]
Argumente
[ @traceid = ] traceid
Die ID der Ablaufverfolgung, auf die der Filter festgelegt ist. @traceid ist "int" ohne Standard. Der Benutzer verwendet diesen @traceid Wert, um die Ablaufverfolgung zu identifizieren, zu ändern und zu steuern.
[ @columnid = ] columnid
Die ID der Spalte, auf die der Filter angewendet wird @columnid ist "int" ohne Standard. Wenn @columnid ist NULL
, löscht SQL Server alle Filter für die angegebene Ablaufverfolgung.
[ @logical_operator = ] logical_operator
Gibt an, ob der OPERATOR AND (0
) oder OR (1
) angewendet wird. @logical_operator ist "int" ohne Standard.
[ @comparison_operator = ] comparison_operator
Gibt den Typ des vorzunehmenden Vergleichs an. @comparison_operator ist int, ohne Standard. 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 oder gleich) |
6 |
LIKE |
7 |
NOT LIKE |
[ @value = ] value
Gibt den Wert an, nach dem gefiltert werden soll. Der Datentyp der @value muss mit dem Datentyp der zu filternden Spalte übereinstimmen. Wenn der Filter beispielsweise für eine Objekt-ID-Spalte festgelegt ist, die ein Int-Datentyp ist, muss @value int sein. Wenn @value nvarchar oder varbinary ist, kann sie eine maximale Länge von 8000 haben.
Wenn der Vergleichsoperator oder -operator ist LIKE
oderNOT LIKE
, kann der logische Operator einen für den LIKE
Vorgang geeigneten Filter oder einen anderen Filter enthalten%
.
Sie können angeben NULL
, dass @value Ereignisse mit NULL
Spaltenwerten herausfiltern soll. Nur 0
(=
Gleich) und 1
(<>
Nicht gleich) Operatoren sind gültig mit NULL
. In diesem Fall entsprechen diese Operatoren den Transact-SQL IS NULL
- und IS NOT NULL
Operatoren.
Um den Filter zwischen einem Bereich von Spaltenwerten anzuwenden, sp_trace_setfilter
muss zweimal ausgeführt werden: einmal mit einem Vergleichsoperator größer als oder gleich (>=
) und ein weiteres Mal mit einem Operator kleiner als oder gleich (<=
)
Weitere Informationen zu Datentypen für Datenspalten finden Sie in der SQL Server-Ereignisklassenreferenz.
Rückgabecodewerte
In der folgenden Tabelle werden die Codewerte beschrieben, die Sie nach Abschluss der gespeicherten Prozedur abrufen können.
Rückgabecode | Beschreibung |
---|---|
0 |
Kein Fehler. |
1 |
Unbekannter Fehler. |
2 |
Die Ablaufverfolgung wird derzeit ausgeführt. Das Ändern der Ablaufverfolgung zu diesem Zeitpunkt führt zu einem Fehler. |
4 |
Die angegebene Spalte ist ungültig. |
5 |
Die angegebene Spalte ist für die Filterung nicht zulässig. Dieser Wert wird nur von sp_trace_setfilter . |
6 |
Der angegebene Vergleichsoperator ist ungültig. |
7 |
Der angegebene logische Operator ist ungültig. |
9 |
Der angegebene Ablaufverfolgungshandle ist ungültig. |
13 |
Nicht genügend Arbeitsspeicher. Wird zurückgegeben, wenn nicht genügend Arbeitsspeicher zum Ausführen der angegebenen Aktion vorhanden ist. |
16 |
Die Funktion ist für diese Ablaufverfolgung nicht gültig. |
Hinweise
sp_trace_setfilter
ist eine gespeicherte SQL Server-Prozedur, die viele der aktionen ausführt, die zuvor von erweiterten gespeicherten Prozeduren ausgeführt wurden, die in früheren Versionen von SQL Server verfügbar sind. Verwenden Sie sp_trace_setfilter
anstelle der xp_trace_set*filter
erweiterten gespeicherten Prozeduren, um Filter für Ablaufverfolgungen zu erstellen, anzuwenden, zu entfernen oder zu bearbeiten. Weitere Informationen finden Sie unter Filtern einer Ablaufverfolgung.
Alle Filter für eine bestimmte Spalte müssen in einer Ausführung von sp_trace_setfilter
. Wenn ein Benutzer z. B. zwei Filter auf die Spalte application name und einen Filter auf die Spalte username anwenden möchte, muss er die Filter für application name nacheinander angeben. SQL Server gibt einen Fehler zurück, wenn der Benutzer versucht, einen Filter für den Anwendungsnamen in einem gespeicherten Prozeduraufruf anzugeben, gefolgt von einem Filter nach Benutzername und dann einem anderen Filter nach Anwendungsnamen.
Parameter aller gespeicherten SQL Trace-Prozeduren (sp_trace_*
) werden streng eingegeben. 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
Erfordert DIE ALTER TRACE-Berechtigung.
Beispiele
Im folgenden Beispiel werden drei Filter für die Ablaufverfolgung 1
festgelegt. Die Filter N'SQLT%'
und N'MS%'
werden mithilfe des Vergleichsoperators "AppName
" für eine Spalte (10
, Wert LIKE
) verwendet. Der N'joe'
-Filter wird mithilfe des Vergleichsoperators "UserName
" für eine andere Spalte (11
, Wert EQUAL
) verwendet.
EXEC sp_trace_setfilter 1, 10, 0, 6, N'SQLT%';
EXEC sp_trace_setfilter 1, 10, 0, 6, N'MS%';
EXEC sp_trace_setfilter 1, 11, 0, 0, N'joe';