Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Microsoft.Data.SqlClient expone el seguimiento del acceso a los datos a través del origen de eventos Microsoft.Data.SqlClient.EventSource. Otros componentes de ADO.NET, como los proveedores de .NET Framework para Oracle, OLE DB y ODBC, y DataSet, tienen sus propios mecanismos de seguimiento.
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 varios componentes de ADO.NET o entre ADO.NET y sus propios componentes.
Para admitir diferentes tecnologías de rastreo, el seguimiento es ampliable, de manera que un programador puede trazar un problema en cualquier nivel de la pila de la aplicación. Aunque el seguimiento no es una característica exclusiva de ADO.NET, los proveedores de Microsoft aprovechan las API generalizadas de seguimiento e instrumentación.
Para obtener más información sobre cómo recopilar trazas de Microsoft.Data.SqlClient, consulte Habilitación del seguimiento de EventSource en SqlClient.
Obtener acceso a información de diagnóstico en el registro de eventos extendidos
Use los identificadores de conexión de Microsoft.Data.SqlClient para correlacionar eventos de cliente con información de diagnóstico del servidor, como errores de conexión, en el ring buffer de conectividad y en el registro de eventos extendidos. Para obtener información sobre cómo leer el registro de eventos extendidos, vea Ver datos de sesión de eventos.
Para las operaciones de conexión, Microsoft. Data.SqlClient envía un identificador de conexión de cliente durante el intercambio de prelogin. Si se produce un error en la conexión, busque el campo ClientConnectionID en el búfer circular de conectividad para obtener información de diagnóstico sobre el error de conexión. Los identificadores de conexión del cliente se registran en el búfer de anillo únicamente cuando se produce un error. Si se produce un error en una conexión antes del intercambio de prelogin, el servidor no recibirá el identificador. El identificador de conexión del cliente es un GUID de 16 bytes. También puede encontrar el identificador de conexión de cliente en la salida de destino de eventos extendidos si agrega la acción client_connection_id a los eventos en una sesión de eventos extendidos.
Para obtener el identificador de conexión de cliente mediante programación, use ClientConnectionId.
El identificador de conexión está disponible para SqlConnection después de establecer correctamente una conexión. Si falla un intento de conexión, es posible que el identificador esté disponible a través de ClientConnectionId.
Microsoft. Data.SqlClient también envía un identificador de actividad específico del subproceso para instrucciones por lotes y solicitudes de llamada a procedimiento remoto (RPC) cuando su origen de eventos está habilitado y el servidor admite encabezados de seguimiento. Para capturar el identificador de actividad en una sesión de eventos extendidos, habilite TRACK_CAUSALITY. Para problemas de rendimiento con una conexión activa, busque el identificador de actividad en el seguimiento de cliente y, a continuación, en la salida de eventos extendidos. El identificador de actividad contiene un GUID de 16 bytes y un número de secuencia de cuatro bytes. El número de secuencia indica el orden relativo de las solicitudes dentro de un hilo. La palabra de configuración de seguimiento de acceso a datos heredada no configura el origen de eventos de Microsoft.Data.SqlClient.
Este es un ejemplo de uso de Transact-SQL para iniciar una sesión de eventos extendidos que se almacenará en un búfer de anillo para 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)