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 0vorhanden 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 die Benutzer nach Abschluss der gespeicherten Prozedur möglicherweise erhalten.

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 Eingabeparameter-Datentypen 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';