Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
ADO.NET apresenta a funcionalidade interna de rastreamento de dados que é suportada pelos provedores de dados .NET para SQL Server, Oracle, OLE DB e ODBC, bem como os protocolos de rede ADO.NET DataSete SQL Server.
O rastreamento de chamadas de API de acesso a dados pode ajudar a diagnosticar os seguintes problemas:
Incompatibilidade de esquema entre o programa cliente e o banco de dados.
Indisponibilidade do banco de dados ou problemas na biblioteca de rede.
SQL incorreto, seja codificado ou gerado por um aplicativo.
Lógica de programação incorreta.
Problemas resultantes da interação entre vários componentes ADO.NET ou entre ADO.NET e seus próprios componentes.
Para oferecer suporte a diferentes tecnologias de rastreamento, o rastreamento é extensível, para que um desenvolvedor possa rastrear um problema em qualquer nível da pilha de aplicativos. Embora o rastreamento não seja uma funcionalidade exclusiva do ADO.NET, os fornecedores da Microsoft tiram partido das APIs generalizadas de rastreamento e instrumentação.
Para obter mais informações sobre como definir e configurar o rastreamento gerenciado no ADO.NET, consulte Acesso a dados de rastreamento.
Aceder a informações de diagnóstico no registo de eventos expandido
No Provedor de Dados do .NET Framework para SQL Server, o rastreamento de acesso a dados (Rastreamento de Acesso a Dados) foi atualizado para facilitar a correlação de eventos do cliente com informações de diagnóstico, como falhas de conexão, do buffer do anel de conectividade do servidor e informações de desempenho do aplicativo no log de eventos estendido. Para obter informações sobre como ler o log de eventos estendido, consulte Exibir dados da sessão do evento.
Para operações de conexão, ADO.NET enviará um ID de conexão de cliente. Se a conexão falhar, você poderá acessar o buffer de 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. Os IDs de conexão do cliente são registrados no buffer de anel somente se ocorrer um erro. (Se uma conexão falhar antes de enviar o pacote de pré-login, um ID de conexão do cliente não será gerado.) O ID de conexão do cliente é um GUID de 16 bytes. Você também pode encontrar o ID de conexão do cliente no output do alvo dos eventos estendidos, se a ação client_connection_id
for adicionada a eventos em uma sessão de eventos estendida. Você pode ativar o rastreamento de acesso a dados, executar novamente o comando de conexão e observar o campo ClientConnectionID
no rastreamento de acesso a dados, caso precise de mais assistência de diagnóstico do driver do cliente.
Você pode obter o ID de conexão do cliente programaticamente usando a SqlConnection.ClientConnectionID
propriedade.
O ClientConnectionID
está disponível para um SqlConnection objeto que estabelece com êxito uma conexão. Se uma tentativa de conexão falhar, ClientConnectionID
pode estar disponível via SqlException.ToString
.
ADO.NET também envia um ID de atividade específico do thread. O ID de atividade é capturado nas sessões de eventos estendidos se as sessões forem iniciadas com a opção TRACK_CAUSALITY ativada. Para problemas de desempenho com uma conexão ativa, pode-se obter o ID da atividade do rastreio de acesso a dados do cliente (campo ActivityID
) e, em seguida, localizar o ID da atividade na saída de 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 quatro bytes. O número de sequência representa a ordem de uma solicitação dentro de um thread e indica a ordem relativa das instruções batch e RPC para o thread. Atualmente, o ActivityID
é enviado opcionalmente para instruções em lote 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 está ativado.
A seguir está um exemplo que usa Transact-SQL para iniciar uma sessão de eventos estendida que será armazenada em um buffer de anel e registrará 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)