错误报告和诊断

本主题描述 StreamInsight 中提供的用于处理进程和查询失败以及生成转储以供进一步诊断问题的功能。在 Windows Vista 和 Windows Server 2008 以及更高版本的操作系统上,StreamInsight 使用 Windows Error Reporting(Windows 错误报告)来报告错误和生成转储。在 Windows XP 和 Windows Server 2003 操作系统上,StreamInsight 使用随 .NET 3.5 提供的 Dr. Watson 版本(DW20.exe 和 DWWin.exe)来报告错误和生成转储。

因为 StreamInsight 使用这些标准 Windows 操作系统工具来报告错误和生成转储,所以,它依赖于用户同意报告在 Windows 操作系统级别设置的错误。当用户在操作系统级别同意报告错误时,错误报告和客户端应用程序的转储将自动发送到 Microsoft,并从本地服务器中删除转储。要调查转储内容来排除故障,必须禁用错误报告。咨询正在运行 StreamInsight 应用程序的服务器的管理员,以确定是否在该计算机上启用错误报告。必须按照以下各节中的说明更改设置。

生成转储

在两种情形下,将为 StreamInsight 应用程序生成转储。

进程失败

StreamInsight 可以部署在嵌入服务器或托管的服务器配置中。对于上述任一配置中的全局未处理的异常,此故障类似于任何 CLR 应用程序中的故障,Windows 操作系统将生成进程转储。例如,请看一个在由用户定义的函数或运算符针对单独线程调用的模块中引发的未处理异常,或一个来自适配器的未处理异常。

查询失败

在嵌入或托管服务器配置中,StreamInsight 查询中的异常并非一定导致 StreamInsight 进程失败。例如,考虑一个来自用户定义函数或运算符的异常。可以通过使用 StreamInsight 诊断 API 以编程方式生成调试转储(如下例中所示)来修改应用程序查询。但请注意,对于 Windows XP 和 Windows Server 2003,导致生成转储将致使进程失败。对于 Windows Vista 和 Windows Server 2008 以及更高版本,则不会出现此类情况。 

Server server = Server.Create(...);  // or Server.Connect(...) if this is a client application connecting to a server.
...
// Generate error reports when a query fails.
DiagnosticSettings settings = new DiagnosticSettings(DiagnosticAspect.GenerateErrorReports, DiagnosticLevel.Always);
server.SetDiagnosticSettings(new Uri("cep:/Server"), settings);
注意事项注意

调试转储文件可能包含敏感信息。为了帮助保护敏感信息,可以使用访问控制列表 (ACL) 来限制对这些文件的访问,或将这些文件复制到具有受限访问权限的文件夹中。在将调试文件发送给 Microsoft 支持服务部门之前,建议您删除所有敏感信息或机密信息。

报告错误

默认情况下,当启用错误报告用户同意时,错误报告将发送到 Microsoft。

Windows Vista 和 Windows Server 2008 以及更高版本

进程失败

任何 Windows 应用程序都可以嵌入 StreamInsight 服务器。当该应用程序可执行文件失败时,错误报告用户同意设置将确定是否将错误发送到 Microsoft。根据错误的原因,StreamInsight 调用堆栈和其他信息可能是错误转储的一部分。StreamInsight 没有任何干预此过程的手段。

查询失败

报告查询失败也遵循前面针对报告进程失败介绍的同一同意策略。然而,在您按照前面所述以编程方式为查询失败启用转储生成后,您可以选择在发生错误的本地服务器上保留转储和错误。

为此,您必须使用以下注册表项设置对 StreamInsight 关闭自动错误报告功能。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\Consent]

"StreamInsightDump"=dword:00000001

对于进程失败和查询失败场景,您可以通过从**“控制面板”中查看“问题报告和解决办法”来查看错误。若要在 Windows 7 和 Windows Server 2008 R2 中查看错误,请从“控制面板”中依次单击“操作中心”“维护”“查看可靠性历史记录”“查看所有问题报告”**。将针对应用程序的名称(例如,MyApplication_name.exe)或针对 StreamInsightHost.exe 报告错误。

Windows XP 和 Windows 2003

若要关闭错误报告功能,进而导致将转储保存到本地主机上,请按照此 Microsoft 支持文章中的说明操作。错误报告将排队并位于目录 %USERPROFILE%\Local Settings\Application Data\PCHealth\ErrorRep 或 %SYSTEMROOT%\PCHEALTH\ErrorRep\QSignoff 下。

对错误报告界面具有访问权限的管理员可以查看队列中的错误,并按逐个案例选择将错误发送到 Microsoft。操作系统对于队列中的条目数保持最大限制。此限制依赖于系统参数。一旦超过此限制,操作系统就不会将更多新的失败报告放入队列中。因此,我们建议管理员定期检查这些队列,以查看是否存在需要进一步调查的错误。还可以选择调用 dw20.exe 来刷新队列;否则,报告将无限期保留。

请参阅

概念

监视 StreamInsight 服务器和查询