Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: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.
EXECUTE sp_trace_setfilter 1, 10, 0, 6, N'SQLT%';
EXECUTE sp_trace_setfilter 1, 10, 0, 6, N'MS%';
EXECUTE sp_trace_setfilter 1, 11, 0, 0, N'joe';