sp_trace_setfilter (Transact-SQL)

Si applica a:SQL Server

Applica un filtro a una traccia. sp_trace_setfilter può essere eseguito solo su tracce esistenti arrestate (@status è 0). SQL Server restituisce un errore se questa stored procedure viene eseguita in una traccia che non esiste o il cui @status non 0è .

Importante

Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, usare Eventi estesi.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

[ @traceid = ] traceid

ID della traccia in cui è impostato il filtro. @traceid è int, senza impostazione predefinita. L'utente usa questo valore @traceid per identificare, modificare e controllare la traccia.

[ @columnid = ] columnid

ID della colonna a cui è applicato il filtro. @columnid è int, senza impostazione predefinita. Se @columnid è NULL, SQL Server cancella tutti i filtri per la traccia specificata.

[ @logical_operator = ] logical_operator

Specifica se viene applicato l'operatore AND (0) o OR (1). @logical_operator è int, senza impostazione predefinita.

[ @comparison_operator = ] comparison_operator

Specifica il tipo di confronto da eseguire. @comparison_operator è int, senza impostazione predefinita. Nella tabella seguente vengono descritti gli operatori di confronto e i valori che li rappresentano.

Valore Operatore di confronto
0 = (Uguale a)
1 <> (Diverso da)
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 al tipo di dati della colonna da filtrare. Ad esempio, se il filtro è impostato su una colonna ID oggetto che è un tipo di dati int , @value deve essere int. Se @value è nvarchar o varbinary, può avere una lunghezza massima di 8000.

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

È possibile specificare NULL per @value di filtrare gli eventi con NULL valori di colonna. Solo 0 gli operatori (= Uguale) e 1 (<> Diverso da ) sono validi con NULL. In questo caso, questi operatori sono equivalenti agli operatori Transact-SQL IS NULL e IS NOT NULL .

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

Per altre informazioni sui tipi di dati delle colonne di dati, vedere Informazioni di riferimento sulla classe di evento di SQL Server.

Valori del codice restituito

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 è consentita per il filtro. Questo valore viene restituito solo da 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 non è disponibile memoria sufficiente per eseguire l'azione specificata.
16 La funzione non è valida per questa traccia.

Osservazioni:

sp_trace_setfilter è una stored procedure di SQL Server che esegue molte delle azioni eseguite in precedenza da stored procedure estese disponibili nelle versioni precedenti di SQL Server. Usare sp_trace_setfilter invece delle xp_trace_set*filter stored procedure estese per creare, applicare, rimuovere o modificare filtri per le tracce. Per altre informazioni, vedere Filtrare una traccia.

Tutti i filtri per una determinata colonna devono essere abilitati insieme in un'unica 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 sul nome dell'applicazione in una chiamata a una stored procedure, seguito da un filtro relativo al nome utente, quindi un altro filtro sul nome dell'applicazione.

I parametri di tutte le stored procedure di traccia SQL (sp_trace_*) sono rigorosamente tipizzato. Se questi parametri non vengono chiamati con i tipi di dati dei parametri di input corretti, come specificato nella descrizione dell'argomento, la stored procedure restituisce un errore.

Autorizzazioni

È richiesta l'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".

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