Delen via


Toegang tot diagnostische gegevens in het uitgebreide gebeurtenissenlogboek

JDBC-stuurprogramma downloaden

In het Microsoft JDBC-stuurprogramma 4.0 voor SQL Server maakt tracering (traceringsstuurprogrammabewerking) het eenvoudiger om clientgebeurtenissen te correleren met diagnostische gegevens. Zaken zoals verbindingsfouten uit de buffer van de connectiviteitsring van de server en informatie over toepassingsprestaties in het logboek met uitgebreide gebeurtenissen kunnen worden getraceerd. Zie Uitgebreide gebeurtenissenvoor meer informatie over het lezen van het uitgebreide gebeurtenissenlogboek.

Bijzonderheden

Voor verbindingsbewerkingen verzendt het Microsoft JDBC-stuurprogramma voor SQL Server een clientverbindings-id. Als de verbinding mislukt, hebt u toegang tot de verbindingsringsbuffer en vindt u het ClientConnectionID veld om diagnostische informatie over de fout op te halen. Zie Connectiviteitsproblemen oplossen in SQL Server 2008 met de connectiviteitsbuffervoor meer informatie over de ringbuffer. Clientverbindings-id's worden alleen in de ringbuffer geregistreerd als er een fout optreedt. Als een verbinding mislukt voordat het prelogin-pakket wordt verzonden, wordt er geen clientverbindings-id gegenereerd.

De clientverbindings-id is een GUID van 16 bytes. Als de actie client_connection_id wordt toegevoegd aan gebeurtenissen in een sessie met uitgebreide gebeurtenissen, wordt de clientverbindings-id weergegeven in de doeluitvoer van de uitgebreide gebeurtenissen. Voor meer diagnostische gegevens van clientstuurprogramma's kunt u tracering inschakelen en de verbindingsopdracht opnieuw uitvoeren om het veld ClientConnectionID in de trace weer te geven.

U kunt de clientverbindings-id programmatisch ophalen met behulp van ISQLServerConnection Interface. De verbindings-id is ook aanwezig in eventuele verbindingsgerelateerde uitzonderingen.

Wanneer er een verbindingsfout optreedt, kan de clientverbindings-id in de traceringsgegevens van de server (BID) en in de connectiviteitsringsbuffer de clientverbindingen met verbindingen op de server correleren. Zie Data Access Tracingvoor meer informatie over BID-traceringen op de server. Opmerking: het artikel over tracering van gegevenstoegang bevat ook informatie over tracering van gegevenstoegang, die niet van toepassing is op het Microsoft JDBC-stuurprogramma voor SQL Server; zie stuurprogrammabewerking traceren voor informatie over het uitvoeren van een tracering voor gegevenstoegang met behulp van het Microsoft JDBC-stuurprogramma voor SQL Server.

Het JDBC-stuurprogramma verzendt ook een threadspecifieke activiteits-id. Als de sessie wordt gestart met de optie TRACK_CAUSALITY ingeschakeld, wordt de activiteits-id vastgelegd in de uitgebreide gebeurtenissessie. Voor prestatieproblemen met een actieve verbinding kunt u de activiteits-id ophalen uit het traceringsveld van de client (activityID) en vervolgens de activiteits-id zoeken in de uitvoer van de uitgebreide gebeurtenissen.

De activiteits-id in uitgebreide gebeurtenissen is een GUID van 16 bytes (niet hetzelfde als de GUID voor de clientverbindings-id) die is toegevoegd aan een reeksnummer van 4 bytes. Het volgnummer vertegenwoordigt de volgorde van een aanvraag binnen een thread. De ActivityId wordt verzonden voor SQL-batchinstructies en RPC-aanvragen. Als u het verzenden van ActivityId naar de server wilt inschakelen, geeft u het volgende sleutel-waardepaar op in het bestand Logging.Properties:

com.microsoft.sqlserver.jdbc.traceactivity = on

Elke andere waarde dan on (hoofdlettergevoelig) schakelt het verzenden van de ActivityId uit.

Voor meer informatie, zie het traceren van driverbewerking. Deze traceringsvlag wordt gebruikt met bijbehorende JDBC-objectloggers om te bepalen of de ActivityId moet worden getraceerd en verzonden in het JDBC-stuurprogramma. Schakel naast het bijwerken van het bestand Logging.Properties de logger com.microsoft.sqlserver.jdbc in op FINER of hoger. Als u ActivityId naar de server wilt verzenden voor aanvragen die door een bepaalde klasse worden gedaan, schakelt u de bijbehorende klasselogger in op FINER of FINEST. Als de klasse bijvoorbeeld SQLServerStatement is, schakelt u de logger com.microsoft.sqlserver.jdbc.SQLServerStatement in.

In het volgende voorbeeld wordt Transact-SQL gebruikt om een uitgebreide gebeurtenissessie te starten die is opgeslagen in een ringbuffer en registreert de activiteits-id die is verzonden vanaf een client op RPC- en batchbewerkingen:

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)

Zie ook

problemen met het JDBC-stuurprogramma vaststellen