Accesso alle informazioni di diagnostica nel log degli eventi estesi
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, con l'ID connessione client nelle informazioni relative alla traccia Built-In Diagnostics (BID) del server e nel buffer circolare è possibile semplificare la correlazione delle connessioni client alle connessioni nel 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 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 a 16 byte, non lo stesso del GUID per l'ID connessione client, aggiunto con un numero di sequenza a 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 Creazione di tracce. 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)