sp_trace_create (Transact-SQL)
Crea la definizione di una nuova traccia, che risulterà arrestata.
Importante |
---|
Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica 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_create [ @traceid = ] trace_id OUTPUT
, [ @options = ] option_value
, [ @tracefile = ] 'trace_file'
[ , [ @maxfilesize = ] max_file_size ]
[ , [ @stoptime = ] 'stop_time' ]
[ , [ @filecount = ] 'max_rollover_files' ]
Argomenti
[ @traceid= ] trace_id
Numero assegnato da Microsoft SQL Server alla nuova traccia. Qualsiasi input dell'utente verrà ignorato. Il parametro trace_id è di tipo int e il valore predefinito è NULL. Il valore di trace_id può essere utilizzato dall'utente per identificare, modificare e controllare la traccia definita dalla stored procedure.[ @options= ] option_value
Specifica le opzioni impostate per la traccia. option_value è di tipo int e non prevede alcun valore predefinito. Gli utenti possono impostare una combinazione di queste opzioni specificando la somma dei valori delle opzioni scelte. Per abilitare entrambe le opzioni TRACE_FILE_ROLLOVER e SHUTDOWN_ON_ERROR, ad esempio, specificare 6 per option_value.Nella tabella seguente sono incluse le opzioni e le descrizioni, accompagnate dai relativi valori.
Nome opzione
Valore opzione
Descrizione
TRACE_FILE_ROLLOVER
2
Specifica che quando vengono raggiunte le dimensioni specificate in max_file_size il file di traccia corrente viene chiuso e viene creato un nuovo file, in cui verranno scritti tutti i nuovi record. Il nome del nuovo file è uguale a quello del file precedente, ma è seguito da un numero intero a indicare la sequenza. Se, ad esempio, il nome del file di traccia originale è nomefile.trc, i successivi file di traccia verranno denominati nomefile_1.trc, nomefile_2.trc e così via.
Man mano che vengono creati nuovi file di traccia di rollover, viene incrementato in modo sequenziale il numero aggiunto nel nome del file.
Se questa opzione viene specificata senza un valore per max_file_size, viene utilizzato il valore predefinito di max_file_size (5 MB).
SHUTDOWN_ON_ERROR
4
Specifica che se non è possibile scrivere nel file per un qualsiasi motivo, SQL Server viene arrestato. Questa opzione risulta utile quando si eseguono tracce di controllo della sicurezza.
TRACE_PRODUCE_BLACKBOX
8
Specifica che il server salverà un record contenente gli ultimi 5 MB di informazioni di traccia generate dal server. TRACE_PRODUCE_BLACKBOX è incompatibile con tutte le altre opzioni.
[ @tracefile= ] 'trace_file'
Specifica il percorso e il nome di file in cui verrà scritta la traccia. trace_file è di tipo nvarchar(245) e non prevede alcun valore predefinito. trace_file può essere una directory locale, ad esempio N 'C:\MSSQL\Trace\traccia.trc', o un nome UNC di una condivisione o un percorso, ad esempio N'\\NomeServer\NomeCondivisione\Directory\trace.trc'.SQL Server aggiunge l'estensione trc a tutti i nomi di file di traccia. Se si specificano l'opzione TRACE_FILE_ROLLOVER e un valore per max_file_size, quando le dimensioni del file di traccia originale raggiungono il limite massimo in SQL Server viene creato un nuovo file di traccia. Il nuovo file avrà lo stesso nome del file originale, con aggiunto _n a indicare la sequenza, a partire da 1. Se, ad esempio, il nome del primo file di traccia è nomefile.trc, il nome del secondo file di traccia sarà nomefile_1.trc.
Se si utilizza l'opzione TRACE_FILE_ROLLOVER, si consiglia di non utilizzare caratteri di sottolineatura nel nome del file di traccia originale. Se vengono utilizzati caratteri di sottolineatura, si verifica il comportamento seguente:
SQL Server Profiler non carica automaticamente o non richiede di caricare i file di rollover (se viene configurata una di queste opzioni di rollover dei file).
La funzione fn_trace_gettable non carica file di rollover (quando questa opzione viene specificata tramite l'argomento number_files) in cui il nome del file di traccia originale termina con un carattere di sottolineatura e un valore numerico. Ciò non vale per il carattere di sottolineatura e il numero che vengono aggiunti automaticamente all'esecuzione del rollover di un file.
[!NOTA]
Come soluzione alternativa a entrambi questi comportamenti, è possibile rinominare i file in modo da rimuovere i caratteri di sottolineatura nel nome del file originale. Ad esempio, se il file originale è denominato my_trace.trc e il file di rollover è denominato my_trace_1.trc, è possibile rinominare i file in mytrace.trc e mytrace_1.trc prima di aprirli in SQL Server Profiler.
Non è possibile specificare trace_file quando si utilizza l'opzione TRACE_PRODUCE_BLACKBOX.
[ @maxfilesize= ] max_file_size
Specifica le dimensioni massime in megabyte (MB) che possono essere raggiunte da un file di traccia. max_file_size è di tipo bigint e il valore predefinito è 5.Se si specifica questo parametro senza l'opzione TRACE_FILE_ROLLOVER, la registrazione nel file viene arrestata quando lo spazio su disco utilizzato supera il valore specificato in max_file_size.
[ @stoptime= ] 'stop_time'
Specifica la data e l'ora in cui la traccia verrà arrestata. Il parametro stop_time è di tipo datetime e il valore predefinito è NULL. Se il valore è NULL, la traccia viene eseguita fino a quando non viene arrestata in modo manuale o fino all'arresto del server.Se si specifica sia stop_time chemax_file_size e si omette TRACE_FILE_ROLLOVER, la traccia viene arrestata all'ora di arresto specificata o quando vengono raggiunte le dimensioni massime di file. Se si specificano stop_time, max_file_size e TRACE_FILE_ROLLOVER, la traccia viene arrestata all'ora specificata, a condizione che non abbia occupato prima lo spazio disponibile nell'unità.
[ @filecount= ] 'max_rollover_files'
Specifica il numero massimo di file di traccia da mantenere con lo stesso nome file di base. max_rollover_files è di tipo int e maggiore di uno. Questo parametro è valido solo se è specificata l'opzione TRACE_FILE_ROLLOVER. Quando si specifica max_rollover_files, SQL Server tenta di non superare il numero di file di traccia specificato in max_rollover_files eliminando il file di traccia meno recente prima di aprirne uno nuovo. In SQL Server viene tenuto traccia dell'età dei file di traccia aggiungendo un numero al nome del file di base.Se ad esempio si imposta il valore "c:\traccia" per trace_file, il file denominato "c:\traccia_123.trc" è meno recente del file "c:\traccia_124.trc". Se max_rollover_files è impostato su 2, SQL Server eliminerà il file "c:\traccia_123.trc" prima di creare il file di traccia "c:\traccia_125.trc".
Si noti che SQL Server tenta di eliminare un file una sola volta e non può eliminare un file se questo è utilizzato da un altro processo. Se, pertanto, un'altra applicazione sta utilizzando i file di traccia mentre è in esecuzione la traccia, è possibile che tali file vengano lasciati nel file system da SQL Server.
Valori di codice 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. |
10 |
Opzioni non valide. Restituito quando le opzioni specificate sono incompatibili. |
12 |
Creazione del file non riuscita. |
13 |
Memoria esaurita. Restituito quando la quantità di memoria disponibile non è sufficiente per eseguire l'azione specificata. |
14 |
Ora di arresto non valida. Restituito quando l'ora specificata è già trascorsa. |
15 |
Parametri non validi. Restituito quando l'utente specifica parametri incompatibili. |
Osservazioni
sp_trace_create è una stored procedure di SQL Server che esegue molte delle azioni che in precedenza venivano eseguite dalle stored procedure estese xp_trace_* delle versioni precedenti di SQL Server. Utilizzare sp_trace_create al posto delle stored procedure seguenti:
xp_trace_addnewqueue
xp_trace_setqueuecreateinfo
xp_trace_setqueuedestination
La stored procedure sp_trace_create può essere utilizzata solo per creare una definizione di traccia, non per avviare o modificare una traccia.
I parametri di tutte le stored procedure di Traccia SQL (sp_trace_xx) sono 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 restituirà un errore.
Per sp_trace_create, l'account del servizio SQL Server deve disporre dell'autorizzazione di scrittura per la cartella dei file di traccia. Se l'account del servizio SQL Server non è un amministratore nel computer in cui si trova il file di traccia, è necessario concedere esplicitamente l'autorizzazione di scrittura all'account del servizio SQL Server.
[!NOTA]
È possibile caricare automaticamente il file di traccia creato con sp_trace_create in una tabella utilizzando la funzione di sistema fn_trace_gettable. Per informazioni sull'utilizzo di questa funzione di sistema, vedere sys.fn_trace_gettable (Transact-SQL).
Per un esempio dell'utilizzo di stored procedure relative alla traccia, vedere Creare una traccia (Transact-SQL).
TRACE_PRODUCE_BLACKBOX è caratterizzato dai seguenti elementi:
È costituito da una traccia di rollover. Il valore predefinito conteggio_file è 2, ma può essere ignorato dall'utente se si utilizza l'opzione filecount.
Il valore predefinito di dimensioni_file, analogamente alle altre tracce, è 5 MB e può essere modificato.
Non è possibile specificare alcun nome di file. Il file verrà salvato come N'%SQLDIR%\MSSQL\DATA\blackbox.trc'
Nella traccia saranno contenuti solo gli eventi seguenti e le relative colonne:
Avvio RPC
Avvio batch
Eccezione
Attention
Non è possibile aggiungere o rimuovere eventi o colonne da questa traccia.
Non è possibile specificare i filtri per questa traccia.
Autorizzazioni
L'utente deve disporre dell'autorizzazione ALTER TRACE.
Vedere anche
Riferimento
sp_trace_generateevent (Transact-SQL)
sp_trace_setevent (Transact-SQL)
sp_trace_setfilter (Transact-SQL)
sp_trace_setstatus (Transact-SQL)