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 relative alla 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 valori di codice che è possibile ottenere, dopo il 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 tali 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
È 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';