Поделиться через


sp_trace_setfilter (Transact-SQL)

Применяет фильтр к трассировке. Хранимая процедура sp_trace_setfilter может выполняться только для существующих остановленных трассировок (свойство status равно 0). SQL Server возвращает ошибку, если эта хранимая процедура выполняется для трассировки, которой не существует или значение свойства status которой не равно 0.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

  • [ @traceid= ] trace_id
    Идентификатор трассировки, для которой устанавливается фильтр. Аргумент trace_id имеет тип int и не имеет значения по умолчанию. Пользователь применяет это значение аргумента trace_id для идентификации, изменения и управления трассировкой.

  • [ @columnid= ] column_id
    Идентификатор столбца, для которого устанавливается фильтр. Аргумент column_id имеет тип int и не имеет значения по умолчанию. Если аргумент column_id имеет значение NULL, то SQL Server удаляет все фильтры для указанной трассировки.

  • [ @logical_operator = ] logical_operator
    Указывает, применяется ли оператор AND (0) или OR (1). Аргумент logical_operator имеет тип int и не имеет значения по умолчанию.

  • [ @comparison_operator= ] comparison_operator
    Указывает тип выполняемого сравнения. Аргумент comparison_operator имеет тип int и не имеет значения по умолчанию. В таблице содержатся операторы сравнения и представляющие их значения.

    Значение

    Оператор сравнения

    0

    = (равно)

    1

    <> (не равно)

    2

    > (больше)

    3

    < (меньше)

    4

    >= (больше или равно)

    5

    <= (меньше или равно)

    6

    LIKE

    7

    NOT LIKE

  • [ @value= ] value
    Определяет значение, с помощью которого будет выполняться фильтрация. Тип данных аргумента value должен совпадать с типом данных столбца, к которому будет применен фильтр. Например, если фильтр применен к столбцу Object ID с типом данных int, аргумент value должен быть типа int. Если аргумент value имеет тип nvarchar или varbinary, то его максимальная длина — 8000.

    Когда оператором сравнения является LIKE или NOT LIKE, то логический оператор может содержать «%» или другой фильтр, подходящий для операции LIKE.

    В SQL Server 2005 и более поздних версиях в качестве аргумента value можно указать значение NULL, чтобы отфильтровать события со значениями столбцов NULL. Только операторы 0 (= равно) и 1 (<> не равно) могут иметь значение параметра NULL. В таком случае эти операторы эквивалентны операторам Transact-SQL IS NULL и IS NOT NULL.

    Чтобы отфильтровать диапазон значений столбцов, процедуру sp_trace_setfilter необходимо выполнить дважды: первый раз — с оператором сравнения «больше или равно» («>=»), второй раз — с оператором сравнения «меньше или равно» («<=»).

    Дополнительные сведения о типах данных столбцов см. в разделе Руководство по классам событий SQL Server.

Значения кодов возврата

В следующей таблице описаны значения кодов, которые могут быть возвращены пользователю при завершении хранимой процедуры.

Код возврата

Описание

0

Нет ошибки.

1

Неизвестная ошибка.

2

Трассировка в данный момент выполняется. Изменение трассировки в это время приведет к ошибке.

4

Указан недопустимый столбец.

5

Нельзя выполнить фильтрацию по указанному столбцу. Это значение возвращается только процедурой sp_trace_setfilter.

6

Указан недопустимый оператор сравнения.

7

Указан недопустимый логический оператор.

9

Указан недопустимый дескриптор трассировки.

13

Недостаточно памяти. Возвращается, если для выполнения указанного действия недостаточно памяти.

16

Недопустимая функция для данной трассировки.

Замечания

sp_trace_setfilter — это хранимая процедура SQL Server, которая выполняет многие действия, ранее выполнявшиеся расширенными хранимыми процедурами в прошлых версиях SQL Server. Используйте процедуру sp_trace_setfilter вместо расширенных хранимых процедур xp_trace_set*filter для создания, применения, удаления фильтров в трассировках и управления ими. Дополнительные сведения см. в разделе Фильтрация трассировки.

Все фильтры для отдельных столбцов должны быть одновременно разрешены однократным выполнением процедуры sp_trace_setfilter. Например, если необходимо применить два фильтра к столбцу имен приложений и один фильтр к столбцу имен пользователей, то нужно задавать фильтры имен приложений последовательно. SQL Server возвращает ошибку, если в одном вызове хранимой процедуры попытаться задать фильтры имен приложений так, чтобы между ними был расположен фильтр имен пользователей.

Аргументы всех хранимых процедур SQL Trace (sp_trace_xx) строго типизированы. Если эти параметры не вызываются вместе с правильными типами данных входных параметров, как указано в описании аргумента, хранимая процедура возвращает ошибку.

Разрешения

Пользователь должен иметь разрешение ALTER TRACE.

Примеры

В следующем примере устанавливается три фильтра на трассировку 1. Фильтры N'SQLT%' и N'MS%' устанавливаются на один столбец (AppName, значение 10) с помощью оператора сравнения LIKE. Фильтр N'joe' устанавливается на другой столбец (UserName, значение 11) с помощью оператора сравнения EQUAL.

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'