Seguimiento de datos en SqlClient

Se aplica a: .NET Framework .NET Standard

Descargar ADO.NET

.NET incluye la funcionalidad de seguimiento de datos integrada que es compatible con el proveedor de datos SqlClient de Microsoft para SQL Server y los protocolos de red de SQL Server.

Las llamadas API de acceso a datos de traza ayudan a diagnosticar los siguientes problemas:

  • Falta de coincidencia de esquemas entre el programa cliente y la base de datos.

  • Inoperabilidad de la base de datos o problemas con las bibliotecas de red.

  • SQL incorrecto, tanto si está incluido en el código como si lo ha generado una aplicación.

  • Lógica de programación incorrecta.

  • Problemas resultantes de la interacción entre el proveedor de datos SqlClient de Microsoft para SQL Server y sus propios componentes.

Para garantizar la compatibilidad entre diferentes tecnologías de traza, éste es ampliable, de manera que un programador puede realizar un seguimiento de un problema en cualquier nivel de la pila de la aplicación. El proveedor de datos SqlClient de Microsoft para SQL Server aprovecha las ventajas de las API de instrumentación y seguimiento generalizadas.

Para obtener más información sobre cómo establecer y configurar el seguimiento administrado en .NET, consulte Tracing Data Access.

Acceso a información de diagnóstico en el registro de eventos extendidos

En el proveedor de datos Microsoft SqlClient para SQL Server, Seguimiento del acceso a datos facilita la correlación entre eventos del cliente e información de diagnóstico, como fallos de conexión, procedente del búfer en anillo de conectividad del servidor, así como con información de rendimiento de la aplicación del registro de eventos extendidos. Para obtener información sobre cómo leer el registro de eventos extendidos, consulte Ver datos de la sesión de eventos.

Para las operaciones de conexión, el proveedor de datos SqlClient de Microsoft 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 del 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 de inicio de sesión previo, no se generará un identificador de conexión del cliente. El identificador de conexión del cliente es un GUID de 16 bytes. También puede encontrar el identificador de conexión del cliente en la salida del destino de eventos extendidos, si la acción client_connection_id se agrega a los eventos en una sesión de eventos extendidos. Puede habilitar el seguimiento de acceso a datos y volver a ejecutar el comando de conexión y observar el campo ClientConnectionID en el seguimiento de acceso a datos, si necesita ayuda adicional de diagnóstico del controlador del cliente.

Puede obtener el identificador de la conexión de cliente mediante programación con la propiedad SqlConnection.ClientConnectionID.

Nota:

El proveedor de datos SqlClient de Microsoft para SQL Server admite el identificador de sesión (SPID) desde la versión 2.1.0. Puede obtenerlo mediante programación con la propiedad SqlConnection.ServerProcessId.

ClientConnectionID y ServerProcessId están disponibles para un objeto SqlConnection que establece correctamente una conexión. Si se produce un error en un intento de conexión, ClientConnectionID puede estar disponible a través de SqlException.ToString.

El proveedor de datos SqlClient de Microsoft para SQL Server también envía un identificador de actividad específico del subproceso. El identificador de actividad se registra en las sesiones de eventos extendidos si se inician con la opción TRACK_CAUSALITY habilitada. Con respecto a los problemas de rendimiento con una conexión activa, puede obtener el identificador de actividad a partir del seguimiento de acceso a datos del cliente (campo ActivityID) y, posteriormente, 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 e indica el orden relativo del lote, así como las instrucciones RPC para el subproceso. ActivityID se envía actualmente de forma opcional para instrucciones SQL por lotes y solicitudes RPC cuando el seguimiento de acceso a datos está habilitado y el decimoctavo bit de la palabra de configuración del seguimiento de acceso a datos está activado.

La siguiente instrucción SQL es un ejemplo que utiliza Transact-SQL para iniciar una sesión de eventos extendidos que se va a almacenar en un búfer de anillo y que registrará el identificador de actividad que se envía desde un cliente en operaciones de 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)