Śledzenie zależności SQL Application Insights SDK nie działa z Microsoft.Data.SqlClient 2.0
Używamy zestawu Application Insights SDK (v2.14) w naszej aplikacji .NET Framework 4.7.2 i udało nam się pomyślnie śledzić zależności SQL (aczkolwiek bez tekstu zapytania).
Przeprowadzamy teraz migrację do pakietu Microsoft.Data.SqlClient z System.Data.SqlClient, abyśmy mogli również przeprowadzić zaawansowane śledzenie SQL, aby zobaczyć pełny tekst zapytania w naszej telemetrii. Zaktualizowaliśmy plik ApplicationInsights.config, aby ustawić EnableSqlCommandTextInstrumentation na wartość true .
Jednak po zainstalowaniu najnowszego pakietu Microsoft.Data.SqlClient (2.01 w momencie pisania) nie otrzymujemy już ŻADNYCH zależności SQL, które są śledzone pod kątem kodu przy użyciu klienta.
W czym problem?
Odpowiedzi
Problem polega na połączeniu wersji zestawu Application Insights SDK i Microsoft.Data.SqlClient .
Wersja 2.0 Microsoft.Data.SqlClient zmieniła nazewnictwo śledzenia EventSource i robiąc to skutecznie złamała obsługę śledzenia zależności SQL w AI SDK dla wersji do 2.15 (w momencie pisania).
Sposób obejścia problemu polega na obniżeniu wersji Microsoft.Data.SqlClient do wersji 1.1.3, która ma stare nazewnictwo EventSource. Spowoduje to przywrócenie śledzenia zależności SQL (i wyświetlenie tekstu zapytania SQL, jeśli dodasz flagę EnableSqlCommandTextInstrumentation ).
Istnieją problemy z AI SDK, aby to naprawić ( w szczególności 2032 ), co, miejmy nadzieję, oznacza, że zostanie to naprawione w przyszłości.
Mam nadzieję, że pomoże to każdemu, kto wyrywa sobie włosy tak samo jak ja :)