sp_trace_setfilter (Transact-SQL)

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

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте расширенные события.

Значок ссылки на раздел Соглашения о синтаксисе 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 (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';

См. также

Справочник

sys.fn_trace_getfilterinfo (Transact-SQL)

sys.fn_trace_getinfo (Transact-SQL)

Основные понятия

SQL-трассировка