Åtkomst till diagnostikinformation i loggen för utökade händelser
I Microsoft JDBC Driver 4.0 för SQL Server gör spårning (spårningsdrivrutinsåtgärd) det enklare att korrelera klienthändelser med diagnostikinformation. Det går att spåra saker som anslutningsfel från serverns anslutningsringbuffert och information om applikationsprestanda i loggen för utökade händelser. Information om hur du läser loggen för utökade händelser finns i Extended Events.
Detaljer
För anslutningsåtgärder skickar Microsoft JDBC-drivrutinen för SQL Server ett klientanslutnings-ID. Om anslutningen misslyckas kan du komma åt anslutningsringsbufferten och hitta fältet ClientConnectionID för att få diagnostikinformation om felet. Mer information om ringbufferten finns i Anslutningsfelsökning i SQL Server 2008 med anslutningsringsbufferten. Klientanslutnings-ID:t loggas endast i ringbufferten om ett fel inträffar. Om en anslutning misslyckas innan preloginpaketet skickas genereras inte ett klientanslutnings-ID.
Klientanslutnings-ID:t är ett GUID på 16 byte. Om åtgärden client_connection_id läggs till i händelser i en förlängd händelsesession, kommer klientanslutnings-ID:t att finnas i målutdata för de förlängda händelserna. För mer klientdrivrutinsdiagnostik kan du aktivera spårning och köra anslutningskommandot igen för att se fältet ClientConnectionID i spårningen.
Du kan hämta klientanslutnings-ID:t programmatiskt med hjälp av ISQLServerConnection Interface. Anslutnings-ID:t finns också i eventuella anslutningsrelaterade undantag.
När det uppstår ett anslutningsfel kan klientanslutnings-ID:t i serverns spårningsinformation för inbyggd diagnostik (BID) och i anslutningsringsbufferten korrelera klientanslutningarna till anslutningar på servern. Mer information om BID-spårningar på servern finns i Data Access Tracing. Observera att artikeln om spårning av dataåtkomst även innehåller information om spårning av dataåtkomst, som inte gäller för Microsoft JDBC-drivrutinen för SQL Server. Se spårningsdrivrutinsåtgärd för information om hur du gör en dataåtkomstspårning med hjälp av Microsoft JDBC-drivrutinen för SQL Server.
JDBC-drivrutinen skickar också ett trådspecifikt aktivitets-ID. Om sessionen startas med alternativet TRACK_CAUSALITY aktiverat registreras aktivitets-ID:t i den utökade händelsesessionen. För prestandaproblem med en aktiv anslutning kan du hämta aktivitets-ID:t från klientens spårningsfält (ActivityID-fältet) och sedan hitta aktivitets-ID:t i utdata för utökade händelser.
Aktivitets-ID:t i utökade händelser är ett GUID på 16 byte (inte samma som GUID för klientanslutnings-ID:t) som läggs till med ett sekvensnummer på 4 byte. Sekvensnumret representerar ordningen på en begäran i en tråd. ActivityId skickas för SQL-batchinstruktioner och RPC-begäranden. Om du vill aktivera sändning av ActivityId till servern anger du följande nyckel/värde-par i filen Logging.Properties:
com.microsoft.sqlserver.jdbc.traceactivity = on
Alla andra värden än on
(skiftlägeskänsliga) inaktiverar sändning av ActivityId.
Mer information finns i spårningsdrivrutinsåtgärd. Den här spårningsflaggan används med motsvarande JDBC-objektloggare för att avgöra om activityid ska spåras och skickas i JDBC-drivrutinen. Förutom att uppdatera filen Logging.Properties aktiverar du logger com.microsoft.sqlserver.jdbc på FINER eller senare. Om du vill skicka ActivityId till servern för begäranden som görs av en viss klass aktiverar du motsvarande klassloggare på FINER eller FINEST. Om klassen till exempel är SQLServerStatement aktiverar du logger com.microsoft.sqlserver.jdbc.SQLServerStatement.
I följande exempel används Transact-SQL för att starta en utökad händelsesession som lagras i en ringbuffert och registrerar aktivitets-ID:t som skickas från en klient i RPC- och batchåtgärder:
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)