Compartilhar via


Acessar informações de diagnóstico nos logs de eventos estendidos

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Banco de dados SQL no Microsoft Fabric

Baixar o driver do OLE DB

Do SQL Server 2012 (11.x) em diante, o Driver do OLE DB para SQL Server e o rastreamento do acesso a dados (Rastreamento do Acesso a Dados) foram atualizados para facilitar a obtenção de informações de diagnóstico sobre falhas de conexão do buffer de anéis de conectividade e informações de desempenho do aplicativo do log de eventos estendidos.

Para obter informações sobre como ler o log de eventos estendidos, consulte Exibir dados de eventos no SQL Server Management Studio.

Observação

Esse recurso destina-se apenas a fins de solução de problemas e diagnóstico e pode não ser adequado para fins de auditoria ou segurança.

Comentários

Para operações de conexão, o Driver do OLE DB para SQL Server envia uma ID de conexão do cliente. Se a conexão falhar, você poderá acessar o buffer do anel de conectividade (Solução de problemas de conectividade no SQL Server 2008 com o Buffer de Anel de Conectividade e localizar o ClientConnectionID campo e obter informações de diagnóstico sobre a falha de conexão. As IDs de conexão de cliente estarão registradas no buffer de anéis se um erro ocorrer. (Se uma conexão falhar antes de enviar o pacote anterior ao logon, uma ID conexão de cliente não será gerada.) A ID de conexão de cliente é um GUID de 16 bytes. Você também poderá localizar a ID de conexão de cliente no destino de saída dos eventos estendidos, se a ação de client_connection_id for adicionada a eventos em uma sessão de eventos estendida. Você pode habilitar o rastreamento de acesso a dados e executar novamente o comando de conexão e observar o campo ClientConnectionID no rastreamento de acesso a dados para uma operação com falha, se precisar de assistência de diagnóstico adicional.

O Driver do OLE DB para SQL Server também envia uma ID de atividade específica do thread. A ID da atividade será capturada nas sessões de eventos estendidos se as sessões forem iniciadas com a opção TRACK_CAUSALITY habilitada. Para problemas de desempenho com uma conexão ativa, você poderá obter a ID de atividade do rastreamento de acesso a dados do cliente (campoActivityID ) e, em seguida, localizar a ID de atividade nas saídas dos eventos estendidos. A ID da atividade nos eventos estendidos é um GUID de 16 bytes (não o mesmo que o GUID para a ID de conexão do cliente) acrescentado com um número de sequência de 4 bytes. O número de sequência representa a ordem de uma solicitação dentro de um thread e indica a ordenação relativa de lote e as instruções RPC para o thread. Opcionalmente, o ActivityID é enviado para instruções do lote do SQL e solicitações RPC quando o rastreamento de acesso a dados está habilitado e o 18º bit na palavra de configuração de rastreamento de acesso a dados é ativado ON.

Veja a seguir um exemplo que usa o Transact-SQL para iniciar uma sessão de eventos estendida que será armazenada em um buffer de anéis e gravará a ID de atividade enviada de um cliente no RPC e de operações de lote.

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)

Arquivo de controle

O conteúdo do arquivo de controle do Driver do OLE DB para SQL Server (ctrl.guid) é:

{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752}  0x630ff  0   MSDADIAG.ETW
{EE7FB59C-D3E8-9684-AEAC-B214EFD91B31}  0x630ff  0   MSOLEDBSQL.1

Arquivo MOF

O conteúdo do arquivo OLE DB Driver for SQL Server mof é:

#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;    
};    

/////////////////////////////////////////////////////////////////////////////    
//    
//  MSOLEDBSQL.1    

[    
 dynamic: ToInstance,    
 Description("MSOLEDBSQL.1"),    
 Guid("{EE7FB59C-D3E8-9684-AEAC-B214EFD91B31}"),    
 locale("MS\\0x409")    
]    
class Bid2Etw_MSOLEDBSQL_1 : EventTrace    
{    
};    

[    
 dynamic: ToInstance,    
 Description("MSOLEDBSQL.1"),    
 Guid("{EE7FB59D-D3E8-9684-AEAC-B214EFD91B31}"),    
 DisplayName("MSOLEDBSQL.1"),    
 locale("MS\\0x409")    
]    
class Bid2Etw_MSOLEDBSQL_1_Trace : Bid2Etw_MSOLEDBSQL_1    
{    
};    

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

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

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

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