En Controlador Microsoft JDBC 4.0 para SQL Server, el seguimiento (Hacer un seguimiento del funcionamiento del controlador) se ha actualizado para facilitar la correlación de eventos de cliente con la información de diagnóstico, como los errores de conexión, a partir del búfer de anillo de conectividad del servidor y la información de rendimiento de aplicación en el registro de eventos extendidos. Para obtener información acerca de la lectura del registro de eventos extendidos, vea Ver datos de sesión de evento.
Detalles
Para las operaciones de conexión, Controlador Microsoft JDBC para SQL Server enviará un identificador de conexión de cliente. Si se produce un error en la conexión, puede tener acceso al búfer de anillo de conectividad (Solución de problemas de conectividad en SQL Server 2008 con el búfer de anillo de conectividad) y buscar el campo ClientConnectionID para obtener información de diagnóstico acerca del error de conexión. Los identificadores de conexión de cliente se registran en el búfer de anillo únicamente si se produce un error. (Si se produce un error en una conexión antes de enviar el paquete previo al inicio de sesión, no se generará un identificador de conexión de cliente). El identificador de conexión de cliente es un GUID de 16 bytes. También puede buscar el identificador de conexión de cliente en el resultado de destino de eventos extendidos si la acción client_connection_id se agrega a los eventos en una sesión de eventos extendidos. Si necesita más ayuda de diagnóstico del controlador cliente, puede habilitar el seguimiento, volver a ejecutar el ejecutar el comando de conexión y observar el campo ClientConnectionID en el seguimiento.
Puede obtener el identificador de conexión de cliente mediante programa con Interfaz de ISQLServerConnection. El identificador de conexión también estará presente en cualquier excepción relacionada con la conexión.
Cuando se produzca un error de conexión, el identificador de conexión de cliente en la información de seguimiento de BID del servidor y en el búfer de anillo de conectividad puede ayudar a correlacionar las conexiones de cliente con las conexiones en el servidor. Para obtener más información acerca de los seguimientos de BID en el servidor, vea Seguimiento de acceso de datos. Tenga en cuenta que el artículo de seguimiento de acceso de datos también incluye información acerca de la realización de un seguimiento de acceso de datos que no se aplica a Controlador Microsoft JDBC para SQL Server; vea Hacer un seguimiento del funcionamiento del controlador para obtener información acerca de cómo realizar un seguimiento de acceso de datos mediante Controlador Microsoft JDBC para SQL Server.
El controlador JDBC también envía un identificador de actividad específico de subproceso. El identificador de actividad se captura en las sesiones de eventos extendidos si se han iniciado con la opción TRACK_CAUSAILITY habilitada. En el caso de problemas de rendimiento con una conexión activa, puede obtener el identificador de actividad del seguimiento del cliente (campo ActivityID) y, a continuación, buscar el identificador de actividad en la salida de eventos extendidos. El identificador de actividad en los eventos extendidos es un GUID de 16 bytes (no es el mismo GUID que el identificador de conexión de cliente) anexado con un número de secuencia de cuatro bytes. El número de secuencia representa el orden de una solicitud en un subproceso. El campo ActivityId se envía para las instrucciones por lotes SQL y las solicitudes RPC. Para habilitar el envío de ActivityId al servidor, primero debe especificar el siguiente par clave-valor en el archivo Logging.Properties:
com.microsoft.sqlserver.jdbc.traceactivity = on
Para obtener más información, vea Hacer un seguimiento del funcionamiento del controlador. Esta marca de seguimiento se utiliza con los registradores de objetos JDBC correspondientes para decidir si se realiza el seguimiento y enviar ActivityId en el controlador JDBC. Además de actualizar el archivo Logging.Properties, el registrador com.microsoft.sqlserver.jdbc debe estar habilitado en FINER o superior. Si desea enviar ActivityId al servidor para las solicitudes efectuadas por una determinada clase, se debe habilitar el registrador de clase correspondiente en FINER o FINEST. Por ejemplo, si la clase es SQLServerStatement, habilite el registrador com.microsoft.sqlserver.jdbc.SQLServerStatement.
A continuación, se ofrece un ejemplo que usa Transact-SQL para iniciar una sesión de eventos extendidos que se almacenará en un búfer de anillo y registrará el identificador de actividad enviado por un cliente en operaciones RPC y por lotes:
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)