Compartir a través de


sp_trace_setfilter (Transact-SQL)

Aplica un filtro a un seguimiento. sp_trace_setfilter solo se puede ejecutar en seguimientos existentes que estén detenidos(status es 0). SQL Server devolverá un error si este procedimiento almacenado se ejecuta en un seguimiento que no existe o cuyo status no sea 0.

Nota importanteImportante

Esta característica se quitará en una versión futura de Microsoft 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.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

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. del seguimiento en el que se establece el filtro. trace_id es de tipo int y no tiene valor predeterminado. El usuario utiliza este valor de trace_id para identificar, modificar y controlar el seguimiento.

  • [ @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 valor predeterminado. Si column_id es NULL, SQL Server borra todos los filtros para el seguimiento especificado.

  • [ @logical_operator = ] logical_operator
    Especifica si se aplican los operadores AND (0) u OR (1). logical_operator es de tipo int y no tiene 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 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. Solo 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 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 de retorno

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

La columna especificada no está permitida para el filtro. Este valor solo 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 seguimiento 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 este seguimiento.

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 los seguimientos. Para obtener más información, vea Filtrar un seguimiento.

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 Seguimiento 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

Referencia

sys.fn_trace_getfilterinfo (Transact-SQL)

sys.fn_trace_getinfo (Transact-SQL)

Conceptos

SQL, seguimiento