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 , NULL
SQL 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.
Если оператор сравнения или LIKE
NOT 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';