sp_trace_setfilter (Transact-SQL)

Se aplica a:SQL Server

Aplica un filtro a un seguimiento. sp_trace_setfilter solo se puede ejecutar en seguimientos existentes que se detengan (@status es 0). SQL Server devuelve un error si este procedimiento almacenado se ejecuta en un seguimiento que no existe o cuya @status no 0es .

Importante

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Use eventos extendidos en su lugar.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @traceid = ] traceid

Identificador del seguimiento en el que se establece el filtro. @traceid es int, sin valor predeterminado. El usuario emplea este valor @traceid para identificar, modificar y controlar el seguimiento.

[ @columnid = ] columnid

Id. de la columna en la que se aplica el filtro. @columnid es int, sin valor predeterminado. Si @columnid es NULL, SQL Server borra todos los filtros del seguimiento especificado.

[ @logical_operator = ] logical_operator

Especifica si se aplica el operador AND (0) o OR (1). @logical_operator es int, sin valor predeterminado.

[ @comparison_operator = ] comparison_operator

Especifica el tipo de comparación que va a realizarse. @comparison_operator es int, sin valor predeterminado. Esta tabla contiene los operadores de comparación y sus valores representativos.

Valor Operadores de comparación
0 = (Igual)
1 <> (No es igual)
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 se va a filtrar. Por ejemplo, si el filtro se establece en una columna Id. de objeto que es un tipo de datos int, @value debe ser int. Si @value es 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 LIKE operación.

Puede especificar NULL para @value filtrar eventos con NULL valores de columna. Solo 0 (= Igual) y 1 (<> No igual) los operadores son válidos con NULL. En este caso, estos operadores son equivalentes a los operadores Transact-SQL IS NULL y IS NOT NULL .

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 a (>=) y otra vez con un operador menor o igual a (<=).

Para obtener más información sobre los tipos de datos de columna de datos, vea la referencia de clase de eventos 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 devuelto Descripción
0 Ningún error.
1 Error desconocido.
2 El seguimiento está actualmente en ejecución. Si se cambia el seguimiento en este momento, se producirá un error.
4 La columna especificada no es válida.
5 No se permite el filtrado de la columna especificada. Este valor solo se devuelve de 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 seguimiento especificado no es válido.
13 Memoria insuficiente Se devuelve cuando no hay suficiente memoria para realizar la acción especificada.
16 La función no es válida para este seguimiento.

Comentarios

sp_trace_setfilter es un procedimiento almacenado de SQL Server que realiza muchas de las acciones ejecutadas anteriormente por procedimientos almacenados extendidos disponibles en versiones anteriores de SQL Server. Use sp_trace_setfilter en lugar de los xp_trace_set*filter procedimientos almacenados extendidos para crear, aplicar, quitar o manipular filtros en seguimientos. Para obtener más información, vea Filtrar un seguimiento.

Todos los filtros de una columna determinada deben habilitarse juntos en una 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 devuelve un error si el usuario intenta especificar un filtro en el nombre de la aplicación en una llamada de procedimiento almacenado, seguido de un filtro en el nombre de usuario y otro filtro en el nombre de la aplicación.

Los parámetros de todos los procedimientos almacenados de seguimiento de SQL (sp_trace_*) se escriben estrictamente. 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

Requiere el 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".

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