O rastreamento de dependência de SQL do SDK do Application Insights não está funcionando com Microsoft.Data.SqlClient 2.0

Oct 08 2020

Estamos usando o SDK do Application Insights (v2.14) em nosso aplicativo .NET Framework 4.7.2 e conseguimos rastrear dependências SQL (embora sem texto de consulta) com êxito.

Agora estamos migrando para o pacote Microsoft.Data.SqlClient de System.Data.SqlClient para que também possamos fazer o rastreamento SQL avançado para ver o texto completo da consulta em nossa telemetria. Atualizamos o arquivo ApplicationInsights.config para definir EnableSqlCommandTextInstrumentation como true .

No entanto, depois de instalar o pacote Microsoft.Data.SqlClient mais recente (2.01 no momento da escrita), não estamos mais recebendo NENHUMA dependência SQL sendo rastreada para código usando o cliente.

Qual é o problema?

Respostas

4 Chris Oct 08 2020 at 15:01

O problema é a combinação de versões do SDK do Application Insights e Microsoft.Data.SqlClient .

A versão 2.0 de Microsoft.Data.SqlClient alterou a nomenclatura do rastreamento de EventSource e, ao fazer isso, quebrou efetivamente o suporte para rastreamento de dependência de SQL no AI SDK para versões até 2.15 (no momento da escrita).

A solução alternativa é fazer o downgrade de Microsoft.Data.SqlClient para a versão 1.1.3, que possui a antiga nomenclatura EventSource. Isso restaurará o rastreamento de dependência SQL (e mostrará o texto da Consulta SQL se você adicionar o sinalizador EnableSqlCommandTextInstrumentation ).

Há problemas relatados contra o SDK do AI para corrigir isso ( 2032 em particular) que, felizmente, significarão que isso será corrigido no futuro.

Espero que isso ajude quem está arrancando os cabelos tanto quanto eu :)