Partilhar via


Acessando informações de diagnóstico no log de eventos estendidos

Baixar o JDBC Driver

No Microsoft JDBC Driver 4.0 para SQL Server, o rastreamento (rastreamento de operação do driver) facilita a correlação entre eventos do cliente e informações de diagnóstico. É possível rastrear itens como falhas de conexão do buffer de anéis de conectividade do servidor e informações de desempenho do aplicativo no log de eventos estendidos. Para obter mais informações sobre como ler o log de eventos estendidos, confira Eventos Estendidos.

Detalhes

Para operações de conexão, o Microsoft JDBC Driver para SQL Server enviará uma ID de conexão do cliente. Caso haja uma falha de conexão, será possível acessar o buffer de anéis de conectividade e localizar o campo ClientConnectionID para obter informações de diagnóstico sobre a falha. Para obter mais informações sobre o buffer de anéis, confira a Solução de problemas de conectividade no SQL Server 2008 usando o Buffer de Anéis de Conectividade. As IDs de conexão de cliente estarão registradas no buffer de anéis se um erro ocorrer. Caso haja uma falha de conexão antes do envio do pacote de pré-logon, uma ID de conexão do cliente não será gerada.

A ID de conexão de cliente é um GUID de 16 bytes. Caso uma ação client_connection_id seja adicionada aos eventos em uma sessão de eventos estendidos, a ID de conexão do cliente estará na saída de destino dos eventos estendidos. Para obter diagnósticos adicionais sobre o driver do cliente, será possível habilitar o rastreamento e executar o comando de conexão novamente para conferir o campo ClientConnectionID no rastreamento.

Você pode obter a ID de conexão do cliente programaticamente, usando a Interface ISQLServerConnection. A ID de conexão também estará presente em todas as exceções relacionadas à conexão.

Quando há um erro de conexão, a ID de conexão do cliente nas informações de rastreamento BID (Diagnóstico Interno) do servidor e no buffer de anéis de conectividade pode ajudar a correlacionar as conexões do cliente às conexões no servidor. Para obter mais informações sobre rastreamentos BID no servidor, confira Rastreamento de acesso a dados. Observe que o artigo sobre rastreamento de acesso a dados também traz informações sobre o rastreamento de acesso a dados que não se aplica ao Microsoft JDBC Driver para SQL Server; confira Rastreamento de operação 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 uma ID de atividade específica do thread. Caso a sessão seja iniciada com a opção TRACK_CAUSAILITY habilitada, a ID de atividade será capturada na sessão de eventos estendidos. Para problemas de desempenho com uma conexão ativa, você pode obter a ID de atividade do rastreamento do cliente (campo ActivityID) e localizar a ID de atividade na saída dos eventos estendidos.

A ID de atividade nos eventos estendidos é um GUID de 16 bytes (não é o mesmo que o GUID da ID de conexão do cliente) com o acréscimo de um número de sequência de 4 bytes. O número sequencial representa a ordem de uma solicitação de um thread. O ActivityId é enviado para instruções SQL em lotes e solicitações RPC. Para habilitar o envio de ActivityId ao servidor, especifique o seguinte par chave-valor no arquivo Logging.Properties:

com.microsoft.sqlserver.jdbc.traceactivity = on

Qualquer valor diferente de on (diferencia maiúsculas de minúsculas) desabilitará o envio da ActivityId.

Para obter mais informações, veja Rastreamento de operação do driver. Esse sinalizador de rastreamento é usado com os agentes de objeto do JDBC correspondentes para decidir se haverá ou não o rastreamento e envio de ActivityId no JDBC driver. Além de atualizar o arquivo Logging.Properties, habilite o agente com.microsoft.sqlserver.jdbc como FINER ou posterior. Para enviar o ActivityId ao servidor a fim de executar solicitações feitas por uma determinada classe, habilite o agente da classe correspondente como FINER ou FINEST. Por exemplo, se a classe SQLServerStatement habilita o agente com.microsoft.sqlserver.jdbc.SQLServerStatement.

O seguinte exemplo usará o Transact-SQL para iniciar uma sessão de eventos estendidos. Ela será armazenada em um buffer de anéis e registrará a ID de atividade enviada de um cliente em operações RPC, bem como 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)

Confira também

Diagnosticando problemas com o JDBC Driver