Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
ADO.NET offre funzionalità di tracciamento dei dati integrate supportate dai provider di dati .NET per SQL Server, Oracle, OLE DB e ODBC, nonché dai protocolli di rete ADO.NET DataSet e SQL Server.
La traccia delle chiamate API di accesso ai dati consente di diagnosticare i problemi seguenti:
Mancata corrispondenza dello schema tra il programma client e il database.
Problemi relativi alla mancata disponibilità del database o alla libreria di rete.
SQL non corretto, sia inserito manualmente che generato da un'applicazione.
Logica di programmazione errata.
Problemi derivanti dall'interazione tra più componenti ADO.NET o tra ADO.NET e i propri componenti.
Per supportare tecnologie di traccia diverse, la traccia è estendibile, in modo che uno sviluppatore possa tracciare un problema a qualsiasi livello dello stack di applicazioni. Anche se la traccia non è una funzionalità esclusiva di ADO.NET, i provider Microsoft sfruttano le API di traccia e strumentazione generali.
Per ulteriori informazioni sull'impostazione e la configurazione del tracciamento gestito in ADO.NET, vedere Tracciamento dell'accesso ai dati.
Accesso alle informazioni diagnostiche nel registro degli eventi estesi
Nel provider di dati .NET Framework per SQL Server, la traccia di accesso ai dati (traccia di accesso ai dati) è stata aggiornata per semplificare la correlazione degli eventi client con informazioni di diagnostica, ad esempio errori di connessione, dal buffer circolare di connettività del server e dalle informazioni sulle prestazioni dell'applicazione nel log eventi estesi. Per ulteriori informazioni sulla lettura del log degli eventi estesi, vedere View Event Session Data (Visualizzare i dati di una sessione di eventi).
Per le operazioni di connessione, ADO.NET invierà un ID connessione client. Se la connessione non riesce, è possibile accedere al buffer circolare di connettività (risoluzione dei problemi di connettività in SQL Server 2008 con il buffer circolare della connettività) e trovare il ClientConnectionID campo e ottenere informazioni di diagnostica sull'errore di connessione. Gli ID di connessione client vengono registrati nel buffer circolare solo se si verifica un errore. Se la connessione non riesce prima di inviare il pacchetto di preaccesso, non verrà generato un ID di connessione client. L'ID di connessione client è un GUID a 16 byte. È anche possibile trovare l'ID connessione client nell'output di destinazione degli eventi estesi, se l'azione client_connection_id viene aggiunta agli eventi in una sessione di eventi estesi. È possibile abilitare la traccia di accesso ai dati ed eseguire di nuovo il comando di connessione e osservare il ClientConnectionID campo nella traccia di accesso ai dati, se è necessaria ulteriore assistenza diagnostica del driver client.
È possibile ottenere l'ID connessione client a livello di codice usando la SqlConnection.ClientConnectionID proprietà .
ClientConnectionID è disponibile per un oggetto SqlConnection che stabilisce correttamente una connessione. Se un tentativo di connessione non riesce, ClientConnectionID potrebbe essere disponibile tramite SqlException.ToString.
ADO.NET invia anche un ID attività specifico del thread. L'ID attività viene acquisito nelle sessioni degli eventi estesi se le sessioni vengono avviate con l'opzione TRACK_CAUSALITY abilitata. Per problemi di prestazioni con una connessione attiva, è possibile ottenere l'ID attività dal campo (ActivityID campo) di traccia di accesso ai dati del client e quindi individuare l'ID attività nell'output degli eventi estesi. L'ID attività negli eventi estesi è un GUID a 16 byte (non uguale al GUID per l'ID connessione client) concatenato a un numero di sequenza di quattro byte. Il numero di sequenza rappresenta l'ordine di una richiesta all'interno di un thread e indica l'ordine relativo di istruzioni batch e RPC per il thread.
ActivityID è attualmente inviato in modo facoltativo per istruzioni batch SQL e richieste RPC quando la traccia di accesso ai dati è abilitata e il 18º bit nella parola di configurazione della traccia di accesso ai dati è attivato.
Di seguito è riportato un esempio di utilizzo di Transact-SQL per avviare una sessione di eventi estesi che verrà archiviata in un buffer circolare e verrà registrato l'ID attività inviato da un client in operazioni RPC e batch.
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)