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)