sp_trace_setfilter (Transact-SQL)
Applica un filtro a una traccia. È possibile eseguire sp_trace_setfilter solo su tracce esistenti arrestate, ovvero il cui valore status è 0. SQL Server restituisce un errore se questa stored procedure viene eseguita su una traccia che non esiste o il cui valore status non è 0.
Importante |
---|
Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, utilizzare Eventi estesi. |
Convenzioni 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 viene applicato 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 (<> disuguaglianza). 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 Filtrare una traccia.
Tutti i filtri di una colonna specifica devono essere abilitati 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 Traccia SQL (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';
Vedere anche
Riferimento
sys.fn_trace_getfilterinfo (Transact-SQL)
sys.fn_trace_getinfo (Transact-SQL)