sp_trace_setfilter (Transact-SQL)
Aplica un filtro a una traza. sp_trace_setfilter sólo se puede ejecutar en trazas existentes que estén detenidas (status es 0). SQL Server devolverá un error si este procedimiento almacenado se ejecuta en una traza que no existe o cuyo status no sea 0.
Sintaxis
sp_trace_setfilter [ @traceid = ] trace_id
, [ @columnid = ] column_id
, [ @logical_operator = ] logical_operator
, [ @comparison_operator = ] comparison_operator
, [ @value = ] value
Argumentos
[ @traceid= ] trace_id
Es el Id. de la traza en la que se establece el filtro. trace_id es de tipo int y no tiene ningún valor predeterminado. El usuario utiliza este valor de trace_id para identificar, modificar y controlar la traza.[ @columnid= ] column_id
Es el Id. de la columna en la que se aplica el filtro. column_id es de tipo int y no tiene ningún valor predeterminado. Si column_id es NULL, SQL Server borra todos los filtros para la traza especificada.[ @logical_operator = ] logical_operator
Especifica si se aplica el operador AND (0) u OR (1). logical_operator es de tipo int y no tiene ningún valor predeterminado.[ @comparison_operator= ] comparison_operator
Especifica el tipo de comparación que va a realizarse. comparison_operator es de tipo int y no tiene ningún valor predeterminado. Esta tabla contiene los operadores de comparación y sus valores representativos.Valor
Operador de comparación
0
= (Es igual a)
1
<> (No es igual a)
2
> (Mayor que)
3
< (Menor que)
4
>= (Mayor o igual que)
5
<= (Menor o igual que)
6
LIKE
7
NOT LIKE
[ @value= ] value
Especifica el valor en el que se va a filtrar. El tipo de datos de value debe coincidir con el tipo de datos de la columna que va a filtrarse. Por ejemplo, si el filtro se establece en una columna de Id. de objeto que tiene un tipo de datos int, value debe ser int. Si value es de tipo nvarchar o varbinary, puede tener una longitud máxima de 8000.Cuando el operador de comparación es LIKE o NOT LIKE, el operador lógico puede incluir "%" u otro filtro adecuado para la operación LIKE.
En SQL Server 2005 y más adelante, puede especificar nulo paravalue para filtrar los eventos con valores NULL en la columna. Sólo los operadores 0 (= Igual a) y 1 (<> No igual a) son válidos con NULL. En este caso, estos operadores son equivalentes a los operadores IS NULL e IS NOT NULL de Transact-SQL.
Para aplicar el filtro entre un intervalo de valores de columna, sp_trace_setfilter debe ejecutarse dos veces, una vez con un operador de comparación Mayor o igual que ('>=') y otra vez con un operador Menor o igual que ('<=').
Para obtener más información acerca de los tipos de datos de columnas de datos, vea Referencia de las clases de evento de SQL Server.
Valores de código de retorno
En la tabla siguiente se describen los valores del código que los usuarios pueden obtener después de completar el procedimiento almacenado.
Código de retorno |
Descripción |
---|---|
0 |
Ningún error. |
1 |
Error desconocido. |
2 |
La traza está actualmente en ejecución. Si se cambia la traza en este momento, se producirá un error. |
4 |
La columna especificada no es válida. |
5 |
La columna especificada no está permitida para el filtro. Este valor sólo se devuelve desde sp_trace_setfilter. |
6 |
El operador de comparación especificado no es válido. |
7 |
El operador lógico especificado no es válido. |
9 |
El identificador de traza especificado no es válido. |
13 |
Memoria insuficiente. Se devuelve cuando no hay memoria suficiente para realizar la acción especificada. |
16 |
La función no es válida para esta traza. |
Comentarios
sp_trace_setfilter es un procedimiento almacenado de SQL Server que realiza la mayor parte de las acciones que anteriormente ejecutaban los procedimientos almacenados extendidos disponibles en versiones anteriores de SQL Server. Utilice sp_trace_setfilter en lugar de los procedimientos almacenados extendidos xp_trace_set*filter para crear, aplicar, quitar o manipular filtros en las trazas. Para obtener más información, vea Filtrar una traza.
Todos los filtros de una columna determinada deben habilitarse en conjunto con una sola ejecución de sp_trace_setfilter. Por ejemplo, si un usuario se propone aplicar dos filtros en la columna del nombre de la aplicación y uno en la columna del nombre del usuario, el usuario deberá especificar los filtros en el nombre de la aplicación en secuencia. SQL Server devolverá un error si el usuario intenta especificar un filtro de nombre de aplicación en una llamada a un procedimiento almacenado, seguido de un filtro de nombre de usuario y, luego, otro filtro de nombre de aplicación.
Los parámetros de todos los procedimientos almacenados de Traza de SQL (sp_trace_xx) tienen establecimiento inflexible de tipos. Si no se llama a estos parámetros con los tipos de datos de parámetros de entrada correctos, según se especifica en la descripción del argumento, el procedimiento almacenado devuelve un error.
Permisos
El usuario debe tener permiso ALTER TRACE.
Ejemplos
En el ejemplo siguiente se establecen tres filtros en Trace 1. Los filtros N'SQLT%' y N'MS%' actúan en una columna (AppName, valor 10) utilizando el operador de comparación "LIKE". El filtro N'joe' actúa en otra columna (UserName, valor 11) utilizando el operador de comparación "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'
Vea también