Flag di traccia (Transact-SQL)

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

[!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

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.

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

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

NotaNota
È possibile controllare l'aumento del livello dei blocchi nella tabella o la granularità di livello HoBT anche utilizzando l'opzione LOCK_ESCALATION dell'istruzione ALTER TABLE.

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

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

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. Il database verrà avviato e recuperato 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 Spostamento dei database di sistema e Spostamento dei database utente. Evitare l'utilizzo durante il normale funzionamento.

3625

Limita la quantità di informazioni restituite 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, 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

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

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 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 2008 è 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 2008..

Esempi

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

DBCC TRACEON (3205,-1)