Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: .NET Framework
.NET
.NET Standard
O .NET apresenta funcionalidade integrada de rastreamento de dados, suportada pelo Microsoft SqlClient Data Provider for SQL Server e protocolos de rede SQL Server.
Rastrear chamadas de acesso a dados à API pode ajudar a diagnosticar os seguintes problemas:
Incompatibilidade de esquema entre o programa cliente e a base de dados.
Indisponibilidade da base de dados ou problemas com bibliotecas de rede.
SQL incorreto, seja codificado fixamente ou gerado por uma aplicação.
Lógica de programação incorreta.
Problemas resultantes da interação entre o Microsoft SqlClient Data Provider para SQL Server e os seus próprios componentes.
Para suportar diferentes tecnologias de traço, o rastreio é extensível, permitindo que um programador rastreie um problema em qualquer nível da pilha de aplicações. O Microsoft SqlClient Data Provider para SQL Server aproveita APIs generalizadas de rastreamento e instrumentação.
Para mais informações sobre como definir e configurar o rastreio gerido em .NET, consulte Rastreio de Acesso a Dados.
Acesso à informação de diagnóstico no registo de eventos alargado
No Microsoft SqlClient Data Provider for SQL Server, o Data Access Tracing facilita a correlação entre eventos do cliente e informações de diagnóstico, como falhas de ligação, provenientes do anel de conectividade do servidor e da informação de desempenho da aplicação no registo de eventos alargado. Para informações sobre a leitura do registo de eventos alargado, consulte Ver Dados da Sessão de Eventos.
Para operações de ligação, o Microsoft SqlClient Data Provider para SQL Server enviará um ID de ligação do cliente. Se a ligação falhar, pode aceder ao buffer do anel de conectividade (resolução de problemas de conectividade no SQL Server 2008 com o Connectivity Ring Buffer) e encontrar o ClientConnectionID campo e obter informação de diagnóstico sobre a falha da ligação. Os IDs de conexão do cliente são registrados no buffer de anel somente se ocorrer um erro. Se uma ligação falhar antes de enviar o pacote de pré-login, não será gerado um ID de ligação do cliente. O ID de ligação do cliente é um GUID de 16 bytes. Também pode encontrar o ID da ligação do cliente na saída de destino dos eventos estendidos, se a ação client_connection_id for adicionada a uma sessão de eventos estendidos. Pode ativar o rastreio de acesso a dados, executar novamente o comando de ligação e observar o campo ClientConnectionID no rastreio de acesso aos dados, caso necessite de assistência adicional no diagnóstico do driver do cliente.
Podes obter o ID da ligação do cliente de forma programática usando a SqlConnection.ClientConnectionID propriedade.
Observação
O Microsoft SqlClient Data Provider para SQL Server suporta o ID de sessão (SPID) desde a versão 2.1.0. Podes obtê-lo programaticamente usando a propriedade SqlConnection.ServerProcessId .
Os ClientConnectionID e ServerProcessId estão disponíveis para um SqlConnection objeto que estabelece com sucesso uma ligação. Se uma tentativa de ligação falhar, ClientConnectionID pode estar disponível via SqlException.ToString.
O Microsoft SqlClient Data Provider para SQL Server também envia um ID de atividade específico para 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 ligação ativa, pode obter o ID de atividade do rastreio de acesso aos dados do cliente (ActivityID campo) e depois localizar o ID de atividade na saída de eventos estendidos. O ID de atividade em eventos estendidos é um GUID de 16 bytes (diferente do GUID para o ID de ligação do cliente), acrescentado com um número sequencial de 4 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, ActivityID pode ser enviado opcionalmente para instruções batch SQL e pedidos RPC quando a monitorização de acesso a dados está ativada e o 18.º bit na palavra de configuração da monitorização de acesso a dados está ligado.
A seguinte instrução SQL é um exemplo que usa Transact-SQL para iniciar uma sessão de eventos avançados que será armazenada num buffer circular e que irá registar o ID de atividade enviado por um cliente em operações RPC e 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)