Flag di traccia (Transact-SQL)

I flag di traccia vengono utilizzati per impostare temporaneamente funzionalità del server specifiche o per disattivare un particolare comportamento. Se, ad esempio, all'avvio di un'istanza di SQL Server viene impostato il flag di traccia 3205, la compressione hardware per le unità nastro risulta disabilitata. I flag di traccia vengono spesso utilizzati per diagnosticare problemi di prestazioni o per eseguire il debug di stored procedure o sistemi complessi.

Nella tabella seguente vengono elencati e descritti i flag di traccia disponibili in SQL Server.

[!NOTA]

È possibile che il comportamento dei flag di traccia non sia supportato nelle versioni future di SQL Server.

Flag di traccia

Descrizione

260

Visualizza informazioni sulla versione delle librerie di collegamento dinamico delle stored procedure estese. Per ulteriori informazioni su __GetXpVersion(), vedere Creazione di stored procedure estese.

Ambito: globale o sessione

1204

Restituisce le risorse e i tipi di blocco coinvolti in un deadlock nonché il comando corrente interessato.

Ambito: solo globale

1211

Disabilita l'escalation di blocchi in base al numero di richieste di memoria o al numero di blocchi. L'escalation di blocchi a livello di riga o di pagina in blocchi di tabella non verrà eseguita in Motore di database di SQL Server.

L'utilizzo di questo flag di traccia può generare un numero eccessivo di blocchi, il che può a sua volta causare un rallentamento delle prestazioni di Motore di database oppure errori 1204 di mancata allocazione delle risorse di blocco a causa di problemi di memoria insufficiente.

Se sono impostati entrambi i flag di traccia 1211 e 1224, 1211 ha la precedenza rispetto a 1224. Tuttavia, poiché il flag di traccia 1211 impedisce l'innalzamento di livello in ogni caso, anche in caso di sovraccarico nella memoria, è consigliabile utilizzare il flag 1224. In questo modo è possibile evitare errori determinati dal superamento del numero di blocchi consentito quando vengono utilizzati numerosi blocchi.

Ambito: globale o sessione

1222

Restituisce le risorse e i tipi di blocco coinvolti in un deadlock nonché il comando corrente interessato in un formato XML non conforme ad alcuno schema XSD.

Ambito: solo globale

1224

Disabilita l'escalation blocchi in base al numero di blocchi. L'escalation blocchi, tuttavia, può comunque essere attivata dal numero di richieste di memoria. Il Motore di database alza di livello i blocchi di riga o di pagina in blocchi di tabella (o partizione) se la quantità di memoria utilizzata dagli oggetti blocco supera uno dei valori seguenti:

  • Quaranta percento della memoria utilizzata da Motore di database. Questa condizione è applicabile solo quando il parametro locks di sp_configure è impostato su 0.

  • 40% della memoria dei blocchi configurata mediante il parametro locks di sp_configure. Per ulteriori informazioni, vedere Opzioni di configurazione del server.

Se sono impostati entrambi i flag di traccia 1211 e 1224, 1211 ha la precedenza rispetto a 1224. Tuttavia, poiché il flag di traccia 1211 impedisce l'innalzamento di livello in ogni caso, anche in caso di sovraccarico nella memoria, è consigliabile utilizzare il flag 1224. In questo modo è possibile evitare errori determinati dal superamento del numero di blocchi consentito quando vengono utilizzati numerosi blocchi.

[!NOTA]

È possibile inoltre controllare l'escalation blocchi nella tabella o la granularità di livello HoBT utilizzando l'opzione LOCK_ESCALATION dell'istruzione ALTER TABLE.

Ambito: globale o sessione

1448

Consente alla lettura del log di replica di andare avanti anche se i database secondari asincroni non hanno riconosciuto il ricevimento di una modifica. Anche con questo flag di traccia abilitato la lettura del log attende sempre i database secondari sincroni. La lettura log non andrà oltre il riconoscimento minimo dei database secondari sincroni. Questo flag di traccia si applica all'istanza di SQL Server, non solo a un gruppo di disponibilità, a un database di disponibilità o a un'istanza di lettura log. Diventa immediatamente effettiva senza un riavvio. È possibile attivare questo flag di traccia anticipatamente o quando un database secondario asincrono genera un errore.

2528

Disabilita il controllo parallelo di oggetti eseguito da DBCC CHECKDB, DBCC CHECKFILEGROUP e DBCC CHECKTABLE. Per impostazione predefinita, il grado di parallelismo viene determinato automaticamente da Query Processor. Il grado massimo di parallelismo viene configurato come quello delle query parallele. Per ulteriori informazioni, vedere Configurare l'opzione di configurazione del server max degree of parallelism.

In genere, la funzionalità di parallelismo DBCC deve essere abilitata. Nel caso di DBCC CHECKDB, Query Processor rivaluta e regola automaticamente il parallelismo per ogni tabella o batch di tabelle controllato. In alcuni casi il controllo viene avviato quando il server è quasi inattivo. Se un amministratore prevede un aumento del carico di lavoro prima del completamento del controllo, deve diminuire o disabilitare il parallelismo in modo manuale.

La disabilitazione della verifica di DBCC può provocare un tempo di completamento eccessivamente lungo per DBCC e se DBCC viene eseguito con la funzionalità TABLOCK abilitata e il parallelismo disattivato, le tabelle potrebbero rimanere bloccate per periodi di tempo prolungati.

Ambito: globale o sessione

3042

Ignora l'algoritmo di preallocazione di compressione di backup predefinito per consentire l'aumento del file di backup solo di quanto necessario per raggiungere le relative dimensioni finali. Questo flag di traccia è utile se è necessario risparmiare spazio allocando solo le dimensioni effettive necessarie per il backup compresso. L'utilizzo di questo flag di traccia può comportare un effetto leggermente negativo sulle prestazioni, vale a dire un possibile aumento della durata dell'operazione di backup.

Per ulteriori informazioni sull'algoritmo di preallocazione, vedere Compressione backup (SQL Server).

3205

Per impostazione predefinita, se un'unità nastro supporta la compressione hardware, l'istruzione DUMP o BACKUP applica questo tipo di compressione. Questo flag di traccia consente di disabilitare la compressione hardware per le unità nastro e risulta utile quando si desidera scambiare nastri con altri siti oppure unità nastro che non supportano la compressione.

Ambito: globale o sessione

3226

Per impostazione predefinita, per ogni operazione di backup eseguita in modo corretto viene aggiunta una voce al log degli errori di SQL Server e al registro eventi di sistema. Se il backup del log viene eseguito di frequente, questi messaggi possono aumentare rapidamente, provocando la creazione di log degli errori di dimensioni elevate e rendendo difficile l'individuazione di altri messaggi.

Grazie a questo flag di traccia, è possibile eliminare queste voci di log. Questo risulta utile se si eseguono backup del log frequenti e se nessuno degli script dipende da tali voci.

3608

Impedisce l'avvio e il recupero automatico dei database ad eccezione del database master in SQL Server. Se vengono avviate le attività che richiedono tempdb, verrà recuperato il database model e verrà creato il database tempdb. I database utente verranno avviati e recuperati al momento dell'accesso. Alcune funzionalità, ad esempio l'isolamento dello snapshot e lo snapshot Read committed, potrebbero non funzionare. Da utilizzare per le operazioni Spostare i database di sistema e Spostare database utente. Evitare l'utilizzo durante il normale funzionamento.

3625

Limita la quantità di informazioni restituite agli utenti che non sono membri del ruolo predefinito del server sysadmin mascherando i parametri di alcuni messaggi di errore tramite '******'. In questo modo è possibile impedire la divulgazione di informazioni riservate.

Ambito: solo globale

4199

Vengono controllate più modifiche di Query Optimizer effettuate precedentemente in più flag di traccia. Per ulteriori informazioni, vedere questo articolo del supporto Microsoft.

Ambito: globale o sessione

4616

Viene garantita la visibilità dei metadati a livello di server per i ruoli applicazione. In SQL Server, poiché i ruoli applicazione non sono associati a un'entità a livello di server, un ruolo applicazione non può accedere a metadati all'esterno del database corrispondente, a differenza di quanto avviene nelle versioni precedenti di SQL Server. Impostando questo flag globale vengono disabilitate le nuove restrizioni e viene consentito ai ruoli applicazione di accedere ai metadati a livello di server.

Ambito: solo globale

6527

Disabilita la generazione di un dump di memoria alla prima occorrenza di un'eccezione di memoria insufficiente nell'integrazione con CLR. Per impostazione predefinita, in SQL Server viene generato un dump di memoria di dimensioni ridotte alla prima occorrenza di un'eccezione di memoria insufficiente in CLR. Il comportamento del flag di traccia è il seguente:

  • Se utilizzato come flag di traccia di avvio, un dump di memoria non viene mai generato. Un dump di memoria può essere generato tuttavia se vengono utilizzati altri flag di traccia.

  • Se il flag di traccia è abilitato in un server in esecuzione, un dump di memoria non verrà generato automaticamente da tale punto in poi. Tuttavia, se un dump di memoria è già stato generato a causa di un'eccezione di memoria insufficiente in CLR, questo flag di traccia non avrà alcun effetto.

Ambito: solo globale

7806

Abilita una connessione amministrativa dedicata (DAC, Dedicated Administrator Connection) in SQL Server Express. Per impostazione predefinita, nessuna risorsa dell'applicazione livello dati è riservata in SQL Server Express. Per ulteriori informazioni, vedere Connessione di diagnostica per gli amministratori di database.

Ambito: solo globale

8032

Vengono ripristinati i parametri dei limiti di cache all'impostazione RTM di SQL Server 2005 che consente, in generale, di aumentare le dimensioni delle cache. Utilizzare questa impostazione quando le voci della cache riutilizzate di frequente non rientrano nella cache e qualora non sia possibile risolvere il problema con la cache dei piani mediante ottimizzare per l'opzione di configurazione del server dei carichi di lavoro a hoc.

Nota di attenzioneAttenzione

Il flag di traccia 8032 può provocare prestazioni ridotte se cache di grandi dimensioni rendono disponibile meno memoria per altri consumer di memoria, ad esempio il pool di buffer.

8207

Abilita aggiornamenti singleton per la replica transazionale. Gli aggiornamenti dei sottoscrittori possono essere replicati come coppia di INSERT e DELETE. Ciò potrebbe non soddisfare le regole business, ad esempio l'attivazione di un trigger UPDATE. Con il flag di traccia 8207 l'aggiornamento di una colonna univoca che interessa solo una riga (aggiornamento singleton) viene replicato come UPDATE e non come coppia INSERT o DELETE. Se l'aggiornamento riguarda una colonna in cui è disponibile un vincolo univoco oppure interessa più righe viene replicato ancora come coppia INSERT o DELETE.

9485

Disabilita l'autorizzazione SELECT per DBCC SHOW_STATISTICS.

Osservazioni

In SQL Server sono disponibili due tipi di flag di traccia: di sessione e globali. I flag di traccia di sessione sono attivi per una connessione e sono visibili solo per tale connessione. I flag di traccia globali vengono impostati a livello del server e sono visibili per tutte le connessioni nel server. Alcuni flag possono essere abilitati solo in ambito globale, mentre altri possono essere abilitati in ambito globale o sessione.

Sono applicabili le regole seguenti:

  • Un flag di traccia globale deve essere abilitato a livello globale. In caso contrario, non ha alcun effetto. È consigliabile attivare i flag di traccia globali all'avvio utilizzando l'opzione della riga di comando -T.

  • Un flag di traccia con ambito globale o sessione può essere abilitato con l'ambito appropriato. Un flag di traccia abilitato a livello di sessione non influisce mai sulle altre sessioni e l'effetto viene perso alla disconnessione dello SPID che ha aperto la sessione.

I flag di traccia possono essere attivati o disattivati in uno dei modi seguenti:

  • Tramite i comandi DBCC TRACEON e DBCC TRACEOFF.

    Si consideri, ad esempio, DBCC TRACEON 2528. Per abilitare il flag di traccia a livello globale, usare DBCC TRACEON con l'argomento -1: DBCC TRACEON (2528, -1). Per disabilitare un flag di traccia globale, utilizzare DBCC TRACEOFF con l'argomento -1.

  • Tramite l'opzione di avvio -T se si desidera che il flag di traccia venga impostato durante l'avvio.

    L'opzione di avvio -T consente di attivare un flag di traccia a livello globale. Non è possibile abilitare un flag di traccia a livello di sessione tramite un'opzione di avvio. Per ulteriori informazioni sulle opzioni di avvio, vedere Opzioni di avvio del servizio del motore di database.

Per verificare i flag di traccia attivi, utilizzare il comando DBCC TRACESTATUS.

Esempi

Nell'esempio seguente viene attivato il flag di traccia 3205 tramite il comando DBCC TRACEON.

DBCC TRACEON (3205,-1)

Vedere anche

Riferimento

Tipi di dati (Transact-SQL)

DBCC INPUTBUFFER (Transact-SQL)

DBCC OUTPUTBUFFER (Transact-SQL)

DBCC TRACEOFF (Transact-SQL)

DBCC TRACEON (Transact-SQL)

DBCC TRACESTATUS (Transact-SQL)

EXECUTE (Transact-SQL)

SELECT (Transact-SQL)

SET NOCOUNT (Transact-SQL)