sp_trace_setfilter (Transact-SQL)

Применимо к:SQL Server

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

Внимание

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_trace_setfilter
    [ @traceid = ] traceid
    , [ @columnid = ] columnid
    , [ @logical_operator = ] logical_operator
    , [ @comparison_operator = ] comparison_operator
    , [ @value = ] value
[ ; ]

Аргументы

[ @traceid = ] traceid

Идентификатор трассировки, для которой задан фильтр. @traceid не используется без значения по умолчанию. Пользователь использует это значение @traceid для идентификации, изменения и управления трассировки.

[ @columnid = ] columnid

Идентификатор столбца, к которому применяется фильтр. @columnid не используется без значения по умолчанию. Если @columnid , NULLSQL Server очищает все фильтры для указанной трассировки.

[ @logical_operator = ] logical_operator

Указывает, применяется ли оператор AND (0) или OR (1). @logical_operator не используется без значения по умолчанию.

[ @comparison_operator = ] comparison_operator

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

Значение Оператор сравнения
0 = (равно)
1 <> (Не равно)
2 > (больше)
3 < (меньше)
4 >= (больше или равно)
5 <= (меньше или равно)
6 LIKE
7 NOT LIKE

[ @value = ] value

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

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

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

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

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

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

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

Код возврата Description
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_*) строго типизированны. Если эти параметры не вызываются с правильными типами данных входных параметров, как указано в описании аргумента, хранимая процедура возвращает ошибку.

Разрешения

Требуется разрешение ALTER TRACE.

Примеры

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

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