Flag di traccia (Transact-SQL)

Data aggiornamento: 15 settembre 2007

I flag di traccia vengono utilizzati per impostare temporaneamente caratteristiche del server specifiche o per disattivare una particolare funzionalità. Se, ad esempio, all'avvio di un'istanza di SQL Server 2005 viene impostato il flag di traccia 3205, la compressione hardware per le unità nastro risulta disattivata. 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 2005.

[!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 Creating Extended Stored Procedures.

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

Disattiva 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 a livello di tabella non verrà eseguita in Motore di database di SQL Server 2005.

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. Per ulteriori informazioni, vedere Escalation dei blocchi (Motore di database).

Se vengono impostati entrambi i flag di traccia 1211 e 1224, 1211 ha la precedenza rispetto a 1224. Poiché il flag di traccia 1211 impedisce l'escalation in tutti i casi, anche in condizioni di scarsa disponibilità di memoria, è tuttavia consigliabile utilizzare 1224. In questo modo è possibile evitare errori determinati dal superamento del numero di blocchi consentito.

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

Disattiva l'escalation di blocchi in base al numero di blocchi. L'escalation di blocchi, tuttavia, può comunque essere attivata dal numero di richieste di memoria. Il Motore di database esegue l'escalation dei blocchi a livello di riga o di pagina in blocchi a livello di tabella se la quantità di memoria utilizzata dagli oggetti blocco supera una delle condizioni seguenti:

  • 40% della memoria utilizzata dal Motore di database, esclusa l'allocazione di memoria tramite AWE (Address Windowing Extension). 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 Impostazione delle opzioni di configurazione del server.

Se vengono impostati entrambi i flag di traccia 1211 e 1224, 1211 ha la precedenza rispetto a 1224. Poiché il flag di traccia 1211 impedisce l'escalation in tutti i casi, anche in condizioni di scarsa disponibilità di memoria, è tuttavia consigliabile utilizzare 1224. In questo modo è possibile evitare errori determinati dal superamento del numero di blocchi consentito.

Ambito: globale o sessione

2528

Disattiva 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 Opzione max degree of parallelism.

In genere, la funzionalità di parallelismo DBCC deve essere attivata. 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 disattivare il parallelismo in modo manuale.

La disattivazione del controllo parallelo, tuttavia, può comportare una diminuzione delle prestazioni generali del database. La diminuzione del grado di parallelismo comporta un aumento della sezione del log delle transazioni da sottoporre a scansione, il che provoca a sua volta una maggiore richiesta di spazio per tempdb e un aumento non lineare del tempo necessario per il completamento dei controlli da parte di DBCC. Se si esegue DBCC con la funzionalità TABLOCK attivata e il parallelismo disattivato, le tabelle potrebbero risultare bloccate per un periodo di tempo prolungato.

Ambito: globale o sessione

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 disattivare 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

3625

Limita la quantità di informazioni restituita nei messaggi di errore. Per ulteriori informazioni, vedere Configurazione della visibilità dei metadati.

Ambito: solo globale

4616

Garantisce la visibilità dei metadati a livello di server per i ruoli applicazione. In SQL Server 2005, 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, diversamente da quanto consentito nelle versioni precedenti di SQL Server. Impostando questo flag globale vengono disattivate le nuove restrizioni e viene consentito ai ruoli applicazione di accedere ai metadati a livello di server.

Ambito: solo globale

7806

Attiva una connessione amministrativa dedicata (DAC, Dedicated Administrator Connection) in SQL Server Express. Per impostazione predefinita, nessuna risorsa DAC è riservata in SQL Server Express. Per ulteriori informazioni, vedere Utilizzo di una connessione amministrativa dedicata.

Ambito: solo globale

Osservazioni

In SQL Server 2005 vi sono 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 attivati solo in ambito globale, mentre altri possono essere attivati in ambito globale o sessione.

Sono applicabili le regole seguenti:

  • Un flag di traccia globale deve essere attivato 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 attivato con l'ambito appropriato. Un flag di traccia attivato 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 attivare il flag di traccia a livello globale, utilizzare DBCC TRACEON con l'argomento -1: DBCC TRACEON 2528, -1. Per disattivare 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 attivare un flag di traccia a livello di sessione tramite un'opzione di avvio. Per ulteriori informazioni sulle opzioni di avvio, vedere Utilizzo delle opzioni di avvio del servizio SQL Server.

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

Differenze di funzionamento

In SQL Server 2000 è sufficiente utilizzare un semplice flag DBCC TRACEON (1204) per includere le informazioni sui deadlock nel log degli errori. In SQL Server 2005 è necessario attivare il flag a livello globale, poiché il flag a livello di sessione non è visibile per il thread di monitoraggio dei deadlock.

Per ulteriori informazioni sulle differenze di funzionamento, vedere Modifiche che possono causare problemi di funzionamento apportate alle funzionalità del Motore di database in SQL Server 2005..

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)

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

15 settembre 2007

Contenuto modificato:
  • Correzione delle informazioni sull'ambito per ogni flag di traccia 1224.

14 aprile 2006

Nuovo contenuto:
  • Aggiunta della descrizione del flag di traccia 7806.
  • Aggiunta delle informazioni sulla preferenza per il flag di traccia 1224 rispetto al 1211.
  • Aggiunta delle informazioni sull'ambito per ogni flag di traccia.
  • Aggiunta delle differenze di funzionamento.

5 dicembre 2005

Nuovo contenuto:
  • Aggiunta della descrizione dei flag di traccia 4616 e 3625.