Share via


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

A partir de SQL Server 2012, SQL Server Native Client y el seguimiento de acceso a datos (Seguimiento de acceso a datos) se han actualizado para facilitar la obtención de información de diagnóstico sobre los errores de conexión de la información desde el búfer de anillo y de información sobre el rendimiento de la aplicación a partir del registro de eventos extendidos.

Para obtener más información sobre la lectura del registro de eventos extendidos, vea Ver datos de sesiones de eventos.

[!NOTA]

Esta función está dirigida únicamente a la solución de problemas y al diagnóstico, además es posible que no sea adecuada para fines de auditoría o seguridad.

Comentarios

Para las operaciones de conexión, SQL Server Native Client enviará un identificador de conexión de cliente. Si la conexión no se realiza correctamente, puede tener acceso al búfer de anillo de conectividad (Solucionar problemas de conectividad en SQL Server 2008 con el búfer de anillo de conectividad), localizar el campo ClientConnectionID y obtener información de diagnóstico sobre el error en la 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. Asimismo, puede buscar el identificador de conexión del cliente en el destino de salida de eventos extendidos, si se agrega la acción client_connection_id a los eventos de una sesión de eventos extendidos. Puede habilitar el seguimiento de acceso a datos, volver a ejecutar el comando de conexión y observar el campo de ClientConnectionID en el seguimiento de acceso a datos de una operación que no se realizó correctamente, si necesita asistencia adicional de diagnóstico.

Si utiliza ODBC en SQL Server Native Client y una conexión se realiza correctamente, puede obtener el identificador de conexión del cliente con el atributo de SQL_COPT_SS_CLIENT_CONNECTION_ID con SQLGetConnectAttr.

SQL Server Native Client también envía un identificador de actividad específico para cada subproceso. El identificador de actividad se captura en las sesiones de eventos extendidos si las sesiones se inician con la opción TRACK_CAUSAILITY 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 que el GUID para el identificador de conexión del cliente) anexado a 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 opcionalmente para las instrucciones por lotes de SQL y solicitudes RPC cuando el seguimiento de acceso a datos se habilita y el bit décimo octavo de la palabra de configuración del seguimiento de acceso a datos se establece en ON.

A continuación, se aporta 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)

Archivo de control

En SQL Server 2012, el contenido del archivo de control de SQL Server Native Client (ctrl.guid.snac11) es:

{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752}  0x00000000  0   MSDADIAG.ETW
{2DA81B52-908E-7DB6-EF81-76856BB47C4F}  0xFFFFFFFF  0   SQLNCLI11.1

Archivo MOF

En SQL Server 2012, el contenido del archivo MOF de SQL Server Native Client es:

#pragma classflags("forceupdate")
#pragma namespace ("\\\\.\\Root\\WMI")

/////////////////////////////////////////////////////////////////////////////
//
//  MSDADIAG.ETW

[
 dynamic: ToInstance,
 Description("MSDADIAG.ETW"),
 Guid("{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752}"),
 locale("MS\\0x409")
]
class Bid2Etw_MSDADIAG_ETW : EventTrace
{
};

[
 dynamic: ToInstance,
 Description("MSDADIAG.ETW"),
 Guid("{8B98D3F3-3CC6-0B9C-6651-9649CCE5C752}"),
 DisplayName("msdadiag"),
 locale("MS\\0x409")
]
class Bid2Etw_MSDADIAG_ETW_Trace : Bid2Etw_MSDADIAG_ETW
{
};

[
 dynamic: ToInstance,
 Description("MSDADIAG.ETW formatted output (A)"),
 EventType(17),
 EventTypeName("TextA"),
 locale("MS\\0x409")
]
class Bid2Etw_MSDADIAG_ETW_Trace_TextA : Bid2Etw_MSDADIAG_ETW_Trace
{
    [
     WmiDataId(1),
     Description("Module ID"),
     read
    ]
    uint32 ModID;

    [
     WmiDataId(2),
     Description("Text StringA"),
     extension("RString"),
     read
    ]
    object msgStr;
};

[
 dynamic: ToInstance,
 Description("MSDADIAG.ETW formatted output (W)"),
 EventType(18),
 EventTypeName("TextW"),
 locale("MS\\0x409")
]
class Bid2Etw_MSDADIAG_ETW_Trace_TextW : Bid2Etw_MSDADIAG_ETW_Trace
{
    [
     WmiDataId(1),
     Description("Module ID"),
     read
    ]
    uint32 ModID;

    [
     WmiDataId(2),
     Description("Text StringW"),
     extension("RWString"),
     read
    ]
    object msgStr;
};


/////////////////////////////////////////////////////////////////////////////
//
//  SQLNCLI11.1

[
 dynamic: ToInstance,
 Description("SQLNCLI11.1"),
 Guid("{2DA81B52-908E-7DB6-EF81-76856BB47C4F}"),
 locale("MS\\0x409")
]
class Bid2Etw_SQLNCLI11_1 : EventTrace
{
};

[
 dynamic: ToInstance,
 Description("SQLNCLI11.1"),
 Guid("{2DA81B53-908E-7DB6-EF81-76856BB47C4F}"),
 DisplayName("SQLNCLI11.1"),
 locale("MS\\0x409")
]
class Bid2Etw_SQLNCLI11_1_Trace : Bid2Etw_SQLNCLI11_1
{
};

[
 dynamic: ToInstance,
 Description("SQLNCLI11.1 formatted output (A)"),
 EventType(17),
 EventTypeName("TextA"),
 locale("MS\\0x409")
]
class Bid2Etw_SQLNCLI11_1_Trace_TextA : Bid2Etw_SQLNCLI11_1_Trace
{
    [
     WmiDataId(1),
     Description("Module ID"),
     read
    ]
    uint32 ModID;

    [
     WmiDataId(2),
     Description("Text StringA"),
     extension("RString"),
     read
    ]
    object msgStr;
};

[
 dynamic: ToInstance,
 Description("SQLNCLI11.1 formatted output (W)"),
 EventType(18),
 EventTypeName("TextW"),
 locale("MS\\0x409")
]
class Bid2Etw_SQLNCLI11_1_Trace_TextW : Bid2Etw_SQLNCLI11_1_Trace
{
    [
     WmiDataId(1),
     Description("Module ID"),
     read
    ]
    uint32 ModID;

    [
     WmiDataId(2),
     Description("Text StringW"),
     extension("RWString"),
     read
    ]
    object msgStr;
};

Vea también

Conceptos

Controlar errores y mensajes