sp_trace_setfilter (Transact-SQL)

Applica un filtro a una traccia. È possibile eseguire sp_trace_setfilter solo su tracce esistenti interrotte, ovvero il cui valore status è 0. SQL Server restituisce un errore se questa stored procedure viene eseguita su una traccia inesistente oppure il cui valore status non è 0.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_trace_setfilter [ @traceid = ] trace_id 
          , [ @columnid = ] column_id
          , [ @logical_operator = ] logical_operator
          , [ @comparison_operator = ] comparison_operator
          , [ @value = ] value

Argomenti

  • [ @traceid= ] trace_id
    ID della traccia a cui applicare il filtro. trace_id è di tipo int e non prevede alcun valore predefinito. Tramite il valore trace_id l'utente può identificare, modificare e controllare la traccia.

  • [ @columnid= ] column_id
    ID della colonna a cui applicare il filtro. column_id è di tipo int e non prevede alcun valore predefinito. Se column_id è NULL, tramite SQL Server vengono cancellati tutti i filtri per la traccia specifica.

  • [ @logical_operator = ] logical_operator
    Specifica se applicare l'operatore AND (0) o OR (1). logical_operator è di tipo int e non prevede alcun valore predefinito.

  • [ @comparison_operator= ] comparison_operator
    Specifica il tipo di confronto da eseguire. comparison_operator è di tipo int e non prevede alcun valore predefinito. Nella tabella seguente vengono descritti gli operatori di confronto e i valori che li rappresentano.

    Valore

    Operatori di confronto

    0

    = (uguaglianza)

    1

    <> (disuguaglianza)

    2

    > (maggiore di)

    3

    < (minore di)

    4

    >= (maggiore o uguale a)

    5

    <= (minore o uguale a)

    6

    LIKE

    7

    NOT LIKE

  • [ @value= ] value
    Specifica il valore in base a cui applicare il filtro. Il tipo di dati di value deve corrispondere a quello della colonna da filtrare. Se, ad esempio, il filtro è impostato su una colonna di ID di oggetto di tipo int, value deve essere di tipo int. Se value è di tipo nvarchar o varbinary, la lunghezza massima del parametro deve essere pari a 8000.

    Quando l'operatore di confronto è LIKE o NOT LIKE, l'operatore logico può includere "%" o un filtro appropriato per l'operazione LIKE.

    In SQL Server 2005 e versioni successive è possibile specificare NULL per value per escludere gli eventi con valori di colonna uguali a NULL. Con NULL sono validi solo gli operatori 0 (= uguaglianza) e 1 (<> diseguaglianza). In questo caso, tali operatori sono equivalenti agli operatori Transact-SQL IS NULL e IS NOT NULL.

    Per applicare il filtro a un intervallo di valori di colonna, è necessario eseguire sp_trace_setfilter due volte, una con l'operatore di confronto maggiore o uguale a ('>=') e una seconda volta con l'operatore minore o uguale a ('<=').

    Per ulteriori informazioni sui tipi di dati validi per le colonne di dati, vedere Guida di riferimento alla classe di evento SQL Server.

Valori restituiti

Nella tabella seguente vengono descritti i possibili valori di codice visualizzati al completamento della stored procedure.

Codice restituito

Descrizione

0

Nessun errore.

1

Errore sconosciuto.

2

La traccia è in esecuzione. Se si modifica la traccia mentre è in esecuzione, viene generato un errore.

4

La colonna specificata non è valida.

5

La colonna specificata non supporta l'applicazione di filtri. Questo valore viene restituito solo quando si esegue sp_trace_setfilter.

6

L'operatore di confronto specificato non è valido.

7

L'operatore logico specificato non è valido.

9

L'handle di traccia specificato non è valido.

13

Memoria esaurita. Restituito quando la quantità di memoria disponibile non è sufficiente per eseguire l'azione specificata.

16

Funzione non valida per la traccia.

Osservazioni

sp_trace_setfilter è una stored procedure di SQL Server che esegue molte delle azioni eseguite dalle stored procedure estese disponibili nelle versioni precedenti di SQL Server. Utilizzare sp_trace_setfilter anziché le stored procedure estese xp_trace_set*filter per creare, applicare, rimuovere o manipolare i filtri applicati alle tracce. Per ulteriori informazioni, vedere Filtraggio di una traccia.

Tutti i filtri di una colonna specifica devono essere attivati contemporaneamente per la stessa esecuzione di sp_trace_setfilter. Se, ad esempio, un utente desidera applicare due filtri alla colonna dei nomi di applicazione e un filtro alla colonna dei nomi utente, deve specificare i filtri per il nome dell'applicazione in sequenza. SQL Server restituisce un errore se l'utente tenta di specificare un filtro per il nome dell'applicazione nella chiamata a un stored procedure, seguito da un filtro per il nome utente e quindi da un altro filtro per il nome dell'applicazione.

I parametri di tutte le stored procedure SQL Trace (sp_trace_xx) devono essere fortemente tipizzati. Se questi parametri non vengono chiamati con i tipi di dati corretti per i parametri di input, come indicato nella descrizione dell'argomento, la stored procedure restituisce un errore.

Autorizzazioni

L'utente deve disporre dell'autorizzazione ALTER TRACE.

Esempi

Nell'esempio seguente vengono impostati tre filtri in Trace 1. I filtri N'SQLT%' e N'MS%' vengono applicati alla colonna AppName, valore 10, tramite l'operatore di confronto "LIKE". Il filtro N'joe' viene applicato a una colonna diversa, ovvero UserName, valore 11, tramite l'operatore di confronto "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'