sp_trace_create (Transact-SQL)

Crea la definizione di una nuova traccia, che risulterà interrotta.

Icona di collegamento a un argomentoConvenzioni 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 MicrosoftSQL Server alla nuova traccia. Qualsiasi input dell'utente verrà ignorato. 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 attivare 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 protezione.

    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\traccia.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 interrotta 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à interrotta. stop_time è di tipo datetime e il valore predefinito è NULL. Se il valore è NULL, la traccia viene eseguita fino a quando non viene interrotta 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 interrotta all'ora di interruzione 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 interrotta 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 sytem da 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.

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 interruzione 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, 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 fn_trace_gettable (Transact-SQL).

Per un esempio dell'utilizzo di stored procedure relative alla traccia, vedere Procedura: Creazione di 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

    • Attenzione

  • 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.

Cronologia modifiche

Aggiornamento del contenuto

Aggiunta l'indicazione di evitare l'utilizzo di caratteri di sottolineatura nel nome del file di traccia originale alla descrizione dell'argomento @tracefile.