Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
ADO.NET possui funcionalidade interna de rastreamento de dados, que é compatível com os provedores de dados do .NET para SQL Server, Oracle, OLE DB e ODBC, bem como com o ADO.NET DataSet e os protocolos de rede do SQL Server.
O rastreamento de chamadas à API de acesso a dados pode ajudar a diagnosticar os seguintes problemas:
Incompatibilidade de esquema entre o programa cliente e o banco de dados.
Problemas de biblioteca de rede ou de indisponibilidade de banco de dados.
SQL incorreto, seja embutido em código 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 dar suporte a diferentes tecnologias de rastreamento, o rastreamento é extensível. Portanto, um desenvolvedor pode rastrear um problema em qualquer nível da pilha de aplicativos. Embora o rastreamento não seja um recurso exclusivo do ADO.NET, os provedores da Microsoft aproveitam as APIs generalizadas de rastreamento e instrumentação.
Para obter mais informações sobre como definir e configurar o rastreamento gerenciado em ADO.NET, consulte Rastreamento de Acesso a Dados.
Acessar informações de diagnóstico nos logs de eventos estendidos
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 de anel de conectividade do servidor e das informações de desempenho do aplicativo no log de eventos estendidos. Para obter mais informações sobre como ler o log de eventos estendidos, consulte View Event Session Data.
Para operações de conexão, ADO.NET enviará uma ID de conexão do cliente. Se houver falha na conexão, você poderá acessar o buffer de anéis de conectividade (Solução de problemas de conectividade no SQL Server 2008 com o buffer de anéis de conectividade), localizar o campo ClientConnectionID e obter informações de diagnóstico sobre a falha na 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á encontrar a ID de conexão do cliente na saída de destino dos eventos estendidos se a ação client_connection_id for adicionada aos eventos em uma sessão de eventos estendidos. Você pode habilitar o rastreamento de acesso a dados e executar novamente o comando de conexão, além de observar o campo ClientConnectionID no rastreamento de acesso a dados, caso precise obter assistência adicional com o diagnóstico de driver do cliente.
Você pode obter a ID de conexão do cliente de modo programático usando a propriedade SqlConnection.ClientConnectionID.
O ClientConnectionID está disponível para um SqlConnection objeto que estabelece com êxito uma conexão. Se uma tentativa de conexão falhar, a ClientConnectionID poderá estar disponível por meio de SqlException.ToString.
ADO.NET 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 (campo ActivityID) e, em seguida, localizar a ID de atividade nas saídas dos eventos estendidos. O ID da atividade em eventos estendidos é um GUID de 16 bytes (não o mesmo que o GUID para o identificador de conexão do cliente) acrescido de 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 ordenação relativa de lote e as instruções RPC para o thread. No momento, a ActivityID é enviada opcionalmente para instruções em lote do SQL e solicitações do 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 (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)