sp_trace_setfilter (Transact-SQL)

Wendet einen Filter auf eine Ablaufverfolgung an. sp_trace_setfilter wird möglicherweise nur für vorhandene Ablaufverfolgungen ausgeführt, die beendet wurden (status ist 0). 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 aufweist.

Wichtiger HinweisWichtig

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen erweiterte Ereignisse.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

sp_trace_setfilter [ @traceid = ] trace_id  
          , [ @columnid = ] column_id 
          , [ @logical_operator = ] logical_operator 
          , [ @comparison_operator = ] comparison_operator 
          , [ @value = ] value

Argumente

  • [ @traceid= ] trace_id
    Die ID der Ablaufverfolgung, auf die der Filter festgelegt wird. trace_id ist vom Datentyp int und hat keinen Standardwert. Der Benutzer verwendet diesen trace_id -Wert zum Identifizieren, Ändern und Steuern der Ablaufverfolgung.

  • [ @columnid= ] column_id
    Die ID der Spalte, auf die der Filter angewendet wird. column_id ist vom Datentyp int und hat keinen Standardwert. 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 Operator AND (0) oder OR (1) angewendet wird. logical_operator ist vom Datentyp int und hat keinen Standardwert.

  • [ @comparison_operator= ] comparison_operator
    Gibt den Typ des vorzunehmenden Vergleichs an. comparison_operator ist vom Datentyp int und hat keinen Standardwert. 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 oder gleich)

    5

    <= (kleiner 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 die Operatoren 0 (= gleich) und 1 (<> ungleich) sind mit NULL gültig. In diesem Fall entsprechen diese Operatoren den Transact-SQL-Operatoren IS NULL und IS NOT NULL.

    Wenn der Filter auf einen Bereich von Spaltenwerten angewendet werden soll, muss sp_trace_setfilter zweimal ausgeführt werden: einmal mit einem größer oder gleich-Vergleichsoperator ('>=') und einmal mit einem kleiner oder gleich-Operator ('<=').

    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 nach Abschluss der gespeicherten Prozedur möglicherweise 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 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 in einem Aufruf einer gespeicherten Prozedur einen Filter für application name angibt und danach ein Filter für username und ein weiterer Filter für application name 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

Verweis

sys.fn_trace_getfilterinfo (Transact-SQL)

sys.fn_trace_getinfo (Transact-SQL)

Konzepte

SQL-Ablaufverfolgung