Acessando informações de diagnóstico no log de eventos estendido
No Microsoft JDBC Driver 4.0 para SQL Server, o rastreamento (Operação do driver de rastreamento) facilita a correlação de eventos do cliente com informações de diagnóstico. Coisas como falhas de conexão do buffer circular de conectividade do servidor e informações de desempenho da aplicação no registo de eventos estendido podem ser rastreadas. Para obter informações sobre como ler o log de eventos estendido, consulte Extended Events.
Detalhes
Para operações de conexão, o Microsoft JDBC Driver para SQL Server enviará uma ID de conexão de cliente. Se a conexão falhar, você poderá acessar o buffer do anel de conectividade e encontrar o campo ClientConnectionID
O ID de conexão do cliente é um GUID de 16 bytes. Se a ação client_connection_id for adicionada a eventos em uma sessão de eventos expandida, o ID de conexão do cliente estará no output de destino dos eventos expandidos. Para obter mais diagnósticos do driver de cliente, pode habilitar o rastreamento e executar novamente o comando de conexão para ver o campo ClientConnectionID no rastreamento.
Você pode obter o ID de conexão do cliente programaticamente usando ISQLServerConnection Interface. O ID de conexão também estará presente em quaisquer exceções relacionadas à conexão.
Quando há um erro de conexão, o ID de conexão do cliente nas informações de rastreamento do BID (Diagnóstico Interno) do servidor e no buffer do anel de conectividade pode ajudar a correlacionar as conexões do cliente com as conexões no servidor. Para obter mais informações sobre rastreamentos BID no servidor, consulte Rastreio de Acesso a Dados. Note que o artigo de rastreamento de acesso a dados também contém informações sobre o rastreamento de acesso a dados, que não se aplica ao Microsoft JDBC Driver para SQL Server; consulte a secção Operação de rastreamento do driver para obter informações sobre como fazer um rastreamento de acesso a dados usando o Microsoft JDBC Driver para SQL Server.
O JDBC Driver também envia um ID de atividade específico do thread. Se a sessão for iniciada com a opção TRACK_CAUSALITY ativada, o ID da atividade será capturado na sessão de eventos estendida. Para problemas de desempenho com uma conexão ativa, podes obter o ID de atividade do rastreio do cliente (campo ID de Atividade) e, em seguida, localizar o ID de atividade no resultado dos eventos estendidos.
O ID de atividade em eventos estendidos é um GUID de 16 bytes (não o mesmo que o GUID para o ID de conexão do cliente) anexado 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. O ActivityId é enviado para declarações de lote SQL e solicitações RPC. Para habilitar o envio de ActivityId para o servidor, especifique o seguinte par chave-valor no arquivo Logging.Properties:
com.microsoft.sqlserver.jdbc.traceactivity = on
Qualquer valor diferente de on
(sensível a maiúsculas e minúsculas) desativará o envio do ActivityId.
Para obter mais informações, consulte Rastreando a operação do driver. Esse sinalizador de rastreamento é usado com os registradores de objetos JDBC correspondentes para decidir se deseja rastrear e enviar o ActivityId no driver JDBC. Além de atualizar o arquivo Logging.Properties, habilite o logger com.microsoft.sqlserver.jdbc no FINER ou superior. Para enviar ActivityId para o servidor para solicitações feitas por uma classe específica, habilite o registrador de classes correspondente no FINER ou FINEST. Por exemplo, se a classe for SQLServerStatement, habilite o logger com.microsoft.sqlserver.jdbc.SQLServerStatement.
O exemplo a seguir usa Transact-SQL para iniciar uma sessão de eventos estendida que é armazenada em um buffer de anel e registra o ID de atividade enviado de um cliente em RPC e operações em 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)