3

For ASP.NET Core (and likely other platforms), Application Insights by default tracks all queries to Azure SQL Database (and likely other platforms) as dependency operations. For each query, it records the query string, something like this:

SELECT [b].[Foo] FROM [Bar] AS [b] WHERE [b].[Id] = @id

However, it doesn't record the value of @id. How do I make it record the values of the query parameters?

Edward Brey
  • 40,302
  • 20
  • 199
  • 253

3 Answers3

4

This is tracked as a feature request on GitHub: https://github.com/Microsoft/ApplicationInsights-dotnet-server/issues/193

We already implemented this type of extensibility for http calls where you now have access to the original http request object to extract additional details.

With the current version of SDK the best option is to set those parameters somewhere on current thread and access from telemetry initializer or track this operation manually by wrapping all SQL calls.

Hope this helps

0

You should be able to use custom dependency tracking feature and create telemetry for SQL database dependency with the right information from code. - https://learn.microsoft.com/en-us/azure/application-insights/app-insights-asp-net-dependencies#custom-dependency-tracking

ManishKG
  • 570
  • 5
  • 18
  • 3
    That sound conceptually good, but digging into the inners of innards of EF to hook into its generated SQL with parameter values seems like a big task. I was hoping for something more off-the-shelf. – Edward Brey Oct 23 '18 at 02:06
0

this way you will have the entire query in the log

$"SELECT [b].[Foo] FROM [Bar] AS [b] WHERE [b].[Id] = {id}"