sp_trace_create (Transact-SQL)

Si applica a:SQL Server

Crea la definizione di una nuova traccia La nuova traccia si trova in uno stato arrestato.

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_create
    [ @traceid = ] traceid OUTPUT
    , [ @options = ] options
    , [ @tracefile = ] N'tracefile'
    [ , [ @maxfilesize = ] maxfilesize ]
    [ , [ @stoptime = ] 'stoptime' ]
    [ , [ @filecount = ] filecount ]
[ ; ]

Argomenti

[ @traceid = ] traceid OUTPUT

Numero assegnato da SQL Server alla nuova traccia. Qualsiasi input fornito dall'utente viene ignorato. @traceid è un parametro OUTPUT di tipo int, con un valore predefinito .NULL L'utente usa il valore @traceid per identificare, modificare e controllare la traccia definita da questa stored procedure.

[ @options = ] opzioni

Specifica le opzioni impostate per la traccia. @options è int, senza impostazione predefinita. Gli utenti possono impostare una combinazione di queste opzioni specificando la somma dei valori delle opzioni scelte. Ad esempio, per attivare entrambe le opzioni TRACE_FILE_ROLLOVER e SHUTDOWN_ON_ERROR, specificare 6 per @options.

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 viene raggiunto il @filecount , il file di traccia corrente viene chiuso e viene creato un nuovo file. Tutti i nuovi record vengono scritti nel nuovo file. Il nuovo file ha lo stesso nome del file precedente, ma viene aggiunto un numero intero per indicare la sequenza. Ad esempio, se il file di traccia originale è denominato filename.trc, il file di traccia successivo è denominato filename_1.trc, il file di traccia seguente è filename_2.trce 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.

SQL Server usa il valore predefinito di @filecount (5 MB) se questa opzione viene specificata senza specificare un valore per @filecount.
SHUTDOWN_ON_ERROR 4 Specifica che se la traccia non può essere scritta nel file per qualsiasi motivo, SQL Server viene arrestato. Questa opzione risulta utile quando si eseguono tracce di controllo della sicurezza.
TRACE_PRODUCE_BLACKBOX 8 Specifica che un record degli ultimi 5 MB di informazioni di traccia prodotte dal server viene salvato dal server. TRACE_PRODUCE_BLACKBOX non è compatibile con tutte le altre opzioni.

[ @tracefile = ] N'tracefile'

Specifica il percorso e il nome del file in cui viene scritta la traccia. @tracefile è nvarchar(245) senza impostazione predefinita. @tracefile può essere una directory locale ( ad esempio N'C:\MSSQL\Trace\trace.trc') o un UNC a una condivisione o un percorso (ad esempio N'\\<servername>\<sharename>\<directory>\trace.trc').

SQL Server aggiunge un'estensione .trc a tutti i nomi di file di traccia. Se si specifica l'opzione TRACE_FILE_ROLLOVER e un @filecount , SQL Server crea un nuovo file di traccia quando il file di traccia originale aumenta fino alla dimensione massima. Il nuovo file ha lo stesso nome del file originale, ma _n viene aggiunto per indicare la sequenza, a partire da 1. Ad esempio, se il primo file di traccia è denominato filename.trc, il secondo file di traccia è denominato filename_1.trc.

Se si usa l'opzione TRACE_FILE_ROLLOVER , è consigliabile non usare 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 richiede di caricare i file di rollover (se una di queste opzioni di rollover dei file è configurata).

  • La funzione sys.fn_trace_gettable non carica i file di rollover (se specificati usando l'argomento @number_files ) in cui il nome file originale termina con un carattere di sottolineatura e un valore numerico. Non si applica al carattere di sottolineatura e al numero aggiunti automaticamente quando viene eseguito il roll over 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.trce il file di rollover è denominato my_trace_1.trc, è possibile rinominare i file in mytrace.trc e mytrace_1.trc prima di aprire i file in SQL Server Profiler.

@tracefile non è possibile specificare quando viene usata l'opzione TRACE_PRODUCE_BLACKBOX .

[ @maxfilesize = ] maxfilesize

Specifica le dimensioni massime in megabyte (MB) che possono essere raggiunte da un file di traccia. @maxfilesize è bigint, con un valore predefinito .5

Se questo parametro viene specificato senza l'opzione TRACE_FILE_ROLLOVER , la traccia interrompe la registrazione nel file quando lo spazio su disco utilizzato supera la quantità specificata da @maxfilesize.

[ @stoptime = ] 'stoptime'

Specifica la data e l'ora in cui la traccia verrà arrestata. @stoptime è datetime, con il valore predefinito NULL. Se NULL, la traccia viene eseguita fino a quando non viene arrestata manualmente o fino all'arresto del server.

Se vengono specificati sia @stoptimeche @maxfilesize e TRACE_FILE_ROLLOVER non vengono specificati, le prime di traccia quando viene raggiunto il tempo di arresto specificato o la dimensione massima del file. Se @stoptime, @maxfilesize e TRACE_FILE_ROLLOVER vengono specificati, la traccia si arresta al momento di arresto specificato, presupponendo che la traccia non riempia l'unità.

[ @filecount = ] 'filecount'

Specifica il numero massimo di file di traccia da mantenere con lo stesso nome file di base. @filecount è int, maggiore di 1. Questo parametro è valido solo se viene specificata l'opzione TRACE_FILE_ROLLOVER . Quando si specifica @filecount , SQL Server tenta di mantenere non più di @filecount file di traccia eliminando il file di traccia meno recente prima di aprire un nuovo file di traccia. SQL Server tiene traccia dell'età dei file di traccia aggiungendo un numero al nome del file di base.

Ad esempio, quando il parametro @tracefile viene specificato come C:\mytrace, un file con il nome C:\mytrace_123.trc è precedente a un file con il nome C:\mytrace_124.trc. Se @filecount è impostato su 2, SQL Server elimina il file C:\mytrace_123.trc prima di creare il file C:\mytrace_125.trcdi traccia.

SQL Server tenta di eliminare ogni file una sola volta e non può eliminare un file in uso da un altro processo. Pertanto, se un'altra applicazione utilizza file di traccia durante l'esecuzione della traccia, SQL Server potrebbe lasciare questi file di traccia nel file system.

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.
10 Opzioni non valide. Restituito quando le opzioni specificate sono incompatibili.
12 Creazione del file non riuscita.
13 Memoria esaurita. Restituito quando non è disponibile memoria 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 eseguite in precedenza da xp_trace_* stored procedure estese disponibili nelle versioni precedenti di SQL Server. Usare sp_trace_create invece di:

  • xp_trace_addnewqueue
  • xp_trace_setqueuecreateinfo
  • xp_trace_setqueuedestination

sp_trace_create crea solo una definizione di traccia. Questa stored procedure non può essere usata per avviare o modificare una traccia.

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.

Per sp_trace_create, l'account del servizio SQL Server deve disporre dell'autorizzazione di scrittura per la cartella del 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 in modo esplicito 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 usando la fn_trace_gettable funzione di sistema. Per altre informazioni, vedere sys.fn_trace_gettable.

Per un esempio di utilizzo di stored procedure di traccia, vedere Creare una traccia (Transact-SQL).

TRACE_PRODUCE_BLACKBOX presenta le caratteristiche seguenti:

  • È una traccia di rollover. Il @filecount predefinito è 2, ma può essere sottoposto a override dall'utente usando @filecount opzione.

  • Il @maxfilesize predefinito, come con altre tracce, è di 5 MB e può essere modificato.

  • Non è possibile specificare alcun nome di file. Il file viene 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 filtri per questa traccia.

Autorizzazioni

È richiesta l'autorizzazione ALTER TRACE.