SQL命令文本不是由应用程式深入分析了云运行的服务
Web应用程序随后收集standard installation guide from MicrosoftSQL命令文本不是由应用程式深入分析了云运行的服务
- 经过在角色属性“发送诊断数据到应用见解”,并公布了应用CS - 收集没有请求数据在所有。
- 在项目中添加了SDK并重新上传了应用程序 - 获取了请求数据,但是收集到的所有SQL依赖项都是用完全无用的“命令文本” - “服务器名称|数据库名称”收集的。
但是,如果安装了Azure状态监视器,则会在本地IIS上跟踪同一应用程序的SQL命令。
我通过RDP连接到服务器,似乎AI状态监视器已成功安装Azure PaaS诊断插件,但未注册为W3SVC的COR_PROFILER,因此它实际上什么也不做。
是否存在任何特定配置开关以启用对云服务的完整SQL命令跟踪?
看来,启用“发送诊断数据到应用见解”,并添加SDK到项目应该是足以收集依赖关系数据。
但是,包含在Azure Cloud Service PaaS诊断插件v1.10.1.1中的Status Monitor的当前安装程序是中断。我尝试使用以前版本的插件(v.1.10.0.0)的安装程序 - 它完美地工作。
从插件的最新版本运行\ StatusMonitor应用\ ApplicationInsightsAgent.msi记录以下异常:
Calling custom action CustomActions!CustomActions.CustomActions.SetEnvironmentVariables
Error: could not load custom action class CustomActions.CustomActions from assembly: CustomActions
System.IO.FileLoadException: Could not load file or assembly 'CustomActions, Version=2.4.0.18059, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)
File name: 'CustomActions, Version=2.4.0.18059, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ---> System.Security.SecurityException: Strong name validation failed. (Exception from HRESULT: 0x8013141A)
我打开那个CustomActions.dll并通过SN为它检查强名称。
sn.exe -vf CustomActions.dll
CustomActions.dll is a delay-signed or test-signed assembly
从v1.10.0.0为CustomActions.dll
相同的检查显示
Assembly 'CustomActions.dll' is valid
显然,有人在MS忘记签署发布之前该DLL,所以状态监视器是对CS不再正确安装虚拟机。向MS支持部门报告,希望他们能尽快解决。
一种解决方法可以手动添加缺少的角色开始的注册表项,而W3SVC尚未启动:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\@Environment
型多字符串值的
与价值
COR_ENABLE_PROFILING=1
COR_PROFILER={324F817A-7420-4E6D-B3C1-143FBED6D855}
MicrosoftInstrumentationEngine_Host={CA487940-57D2-10BF-11B2-A3AD5A13CBC0}
生reg文件是:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC]
"Environment"=hex(7):43,00,4f,00,52,00,5f,00,45,00,4e,00,41,00,42,00,4c,00,45,\
00,5f,00,50,00,52,00,4f,00,46,00,49,00,4c,00,49,00,4e,00,47,00,3d,00,31,00,\
00,00,43,00,4f,00,52,00,5f,00,50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,52,\
00,3d,00,7b,00,33,00,32,00,34,00,46,00,38,00,31,00,37,00,41,00,2d,00,37,00,\
34,00,32,00,30,00,2d,00,34,00,45,00,36,00,44,00,2d,00,42,00,33,00,43,00,31,\
00,2d,00,31,00,34,00,33,00,46,00,42,00,45,00,44,00,36,00,44,00,38,00,35,00,\
35,00,7d,00,00,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,49,\
00,6e,00,73,00,74,00,72,00,75,00,6d,00,65,00,6e,00,74,00,61,00,74,00,69,00,\
6f,00,6e,00,45,00,6e,00,67,00,69,00,6e,00,65,00,5f,00,48,00,6f,00,73,00,74,\
00,3d,00,7b,00,43,00,41,00,34,00,38,00,37,00,39,00,34,00,30,00,2d,00,35,00,\
37,00,44,00,32,00,2d,00,31,00,30,00,42,00,46,00,2d,00,31,00,31,00,42,00,32,\
00,2d,00,41,00,33,00,41,00,44,00,35,00,41,00,31,00,33,00,43,00,42,00,43,00,\
30,00,7d,00,00,00,00,00
在this article中,我们可以发现,如果只将Application Insights SDK添加到Web应用程序项目中,则默认情况下,依赖项诊断程序不会收集SQL命令文本。
,并根据您的描述,installing Application Insights Status Monitor似乎没有帮助收集SQL命令文本。如果可能的话,你可以尝试 write code to send dependency information使用TrackDependency
,下面的代码适用于我,请参考它。
var startTime = DateTime.UtcNow;
var timer = System.Diagnostics.Stopwatch.StartNew();
try
{
SqlConnection con = new SqlConnection("{connect_string}");
commendtext = "SELECT COUNT(1) FROM dbo.AspNetUsers";
SqlCommand com = new SqlCommand(commendtext, con);
con.Open();
int n = (int)com.ExecuteScalar();
con.Close();
success = n > 0 ? true : false;
}
finally
{
timer.Stop();
telemetry.TrackDependency("SQL", "SQL: tcp:{server_name}.database.windows.net,1433 | {database_name}", ":{server_name}.database.windows.net", commendtext, startTime, timer.Elapsed, "{result_code}", success);
}
上应用洞察门户详细SQL命令文本
安装状态监视器可以帮助我的本地机器。状态监视器也通过天蓝色的基础设施安装在云服务虚拟机上,但该设置似乎不完整。仅仅因为状态监视器的一些不完整安装而导致整个应用程序的手动检测将需要相当多的工作,并且不会帮助通过EF完成的查询:( – PashaPash
将问题追溯到由MS使用的状态监视器的错误安装程序来预先配置Cloud Service发布了可能的解决方法作为答案。 – PashaPash