Accesso alle informazioni di diagnostica nel log degli eventi estesi

Scaricare il driver JDBC

In Microsoft JDBC Driver 4.0 per SQL Server, la traccia (Creazione di tracce) consente di correlare più facilmente gli eventi client alle informazioni di diagnostica. È possibile tenere traccia di aspetti come gli errori di connessione dal buffer circolare di connettività del server e le informazioni sulle prestazioni dell'applicazione nel log eventi estesi. Per informazioni sulla lettura del registro eventi esteso, vedere Eventi estesi.

Dettagli

Per le operazioni di connessione, Microsoft JDBC Driver per SQL Server invierà un ID connessione client. Se la connessione non riesce, è possibile accedere al buffer circolare di connettività e individuare il campo ClientConnectionID per ottenere informazioni di diagnostica sull'errore. Per altre informazioni sul buffer circolare, vedere Risoluzione dei problemi di connettività in SQL Server 2008 con il buffer circolare della connettività. Gli ID di connessione client vengono registrati nel buffer circolare solo se si verifica un errore. In caso di errore di connessione prima dell'invio del pacchetto di preaccesso, l'ID di connessione client non verrà generato.

L'ID di connessione client è un GUID a 16 byte. Se l'azione client_connection_id viene aggiunta agli eventi in una sessione di eventi estesi, l'ID connessione client si troverà nell'output di destinazione degli eventi estesi. Per ulteriori informazioni di diagnostica sul driver client, è possibile abilitare la traccia ed eseguire nuovamente il comando di connessione per vedere il campo ClientConnectionID nella traccia.

È possibile ottenere l'ID di connessione client a livello di codice usando l'interfaccia ISQLServerConnection. L'ID connessione sarà inoltre disponibile in tutte le eccezioni correlate alla connessione.

Quando si verifica un errore di connessione, l'ID connessione client nelle informazioni di traccia di Built-In Diagnostics (BID) del server e nel buffer circolare di connettività può aiutare a correlare le connessioni client alle connessioni sul server. Per altre informazioni sulle tracce BID nel server, vedere la pagina relativa alla traccia di accesso ai dati. Si noti che l'articolo sulla traccia di accesso ai dati contiene anche informazioni che non si applicano a Microsoft JDBC Driver per SQL Server. Per informazioni sull'esecuzione di una traccia di accesso ai dati usando Microsoft JDBC Driver per SQL Server, vedere Creazione di tracce.

Il driver JDBC invia anche un ID attività specifico del thread. Se la sessione viene avviata con l'opzione TRACK_CAUSALITY abilitata, l'ID attività viene acquisito nella sessione degli eventi estesi. Per problemi di prestazioni con una connessione attiva, è possibile ottenere l'ID attività dalla traccia del client (campo ActivityID) e quindi individuare l'ID attività nell'output degli eventi estesi.

L'ID attività negli eventi estesi è un GUID di 16 byte (non uguale al GUID dell'ID di connessione client), seguito da un numero di sequenza di 4 byte. Il numero di sequenza rappresenta l'ordine di una richiesta all'interno di un thread. ActivityId viene inviato per le istruzioni batch SQL e per le richieste RPC. Per abilitare l'invio di ActivityId al server, specificare la seguente coppia chiave-valore nel file Logging.Properties:

com.microsoft.sqlserver.jdbc.traceactivity = on

Qualsiasi valore diverso da on (con distinzione tra maiuscole e minuscole) disabiliterà l'invio di ActivityId.

Per altre informazioni, vedere Tracciamento del funzionamento del driver. Questo flag di traccia viene utilizzato con i logger degli oggetti JDBC corrispondenti per stabilire se tracciare e inviare ActivityId nel driver JDBC. Oltre ad aggiornare il file Logging.Properties, abilitare il logger com.microsoft.sqlserver.jdbc al livello FINER o superiore. Per inviare ActivityId al server per le richieste effettuate da una classe specifica, abilitare il logger della classe corrispondente al livello FINER o FINEST. Se ad esempio la classe è SQLServerStatement, abilitare il logger com.microsoft.sqlserver.jdbc.SQLServerStatement.

L'esempio seguente usa Transact-SQL per avviare una sessione eventi estesi che viene archiviata in un buffer circolare e registra l'ID attività inviato da un client nelle operazioni batch e RPC:

create event session MySession on server
add event connectivity_ring_buffer_recorded,
add event sql_statement_starting (action (client_connection_id)),
add event sql_statement_completed (action (client_connection_id)),
add event rpc_starting (action (client_connection_id)),
add event rpc_completed (action (client_connection_id))
add target ring_buffer with (track_causality=on)