想象一下.NET 4.6控制台应用程序,它使用ADO.NET来查询sql数据库。
static void Main(string[] args)
{
TelemetryConfiguration.Active.InstrumentationKey = "my key";
var tc = new TelemetryClient(TelemetryConfiguration.Active);
tc.TrackEvent("App start");
string ConnString = "Data Source=localhost;Initial Catalog=MyDb;Persist Security Info=True;User ID=sa;Password=****;MultipleActiveResultSets=True";
string SqlString = "Select * From Customers";
using (SqlConnection conn = new SqlConnection(ConnString))
{
using (SqlCommand cmd = new SqlCommand(SqlString, conn))
{
cmd.CommandType = CommandType.Text;
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
var res = reader.Read();
}
}
}
tc.TrackEvent("App stop");
tc.Flush();
Thread.Sleep(5000);
}
在这种情况下是否支持捕获SQL命令文本?或者仅在IIS和Azure App上支持它?
在此示例中,我希望在依赖项事件中的Application Insights上看到文本“Select * From Customers”,但此文本不存在。只有少数其他属性的依赖项,如持续时间,客户端IP等,但不是sql文本。
答案 0 :(得分:2)
sql语句由" status monitor"收集,它在运行时作为.net探查器在Web应用程序上运行。
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-asp-net-dependencies
我会四处询问,但我非常确定在不跳过批次的情况下,将它连接到非网络应用上并不容易的箍。