COM+ CRM 故障排除

以下是开发和使用 COM+ CRM 时最常遇到的问题:

  • 事件日志消息。 如果 CRM 服务器应用程序遇到严重的内部错误,它将执行 failfast(终止 CRM 服务器应用程序进程),并将消息写入 Windows 事件日志。 如果遇到任何问题,请参阅事件日志。

  • CRM 补偿程序中的异常。 CRM 基础结构会创建 CRM 补偿程序,并为其传递 CRM 工作器编写的事务结果通知和日志记录。 如果 CRM 补偿程序返回错误或引发异常,则 CRM 基础结构会捕获该错误或异常并导致 failfast。 事件日志中的消息指示已从 CRM 补偿程序收到异常。 可以强制忽略这些异常。 (请参阅COM+ CRM 注册表设置。)CRM 补偿程序中的异常很可能意味着特定 CRM 补偿程序组件中出现问题,而不是 CRM 基础结构本身中出现问题。

  • 恢复跟踪。 恢复跟踪对于在恢复过程中确定问题非常有用。 有关启用恢复跟踪的信息,请参阅 COM+ CRM 注册表设置

  • 尝试在未启用 CRM 的情况下运行。 仅将 CRM 工作器和 CRM 补偿程序组件放入 COM+ 服务器应用程序是不够的。 必须使用 COM+ 应用程序属性页的“高级”选项卡上的“启用补偿资源管理器”选项,为特定 COM+ 服务器应用程序专门启用对 CRM 的支持。 (有关详细信息,请参阅配置 COM+ CRM 组件。)如果尝试在未启用 CRM 的服务器应用程序中使用 CRM,则会向 CRM 工作器返回错误代码。

  • 尝试在客户端进程中运行 CRM。 CPM 不会在客户端进程中运行;它们必须在 COM+ 服务器应用程序进程中运行。 可以将 CRM 组件放置在库包中供多个 COM+ 服务器应用程序使用,但它们在客户端进程中不可用。 尝试在客户端进程中使用 CRM 接口时,会将错误代码返回给 CRM 工作器。

  • 正在恢复。 当 CRM 服务器应用程序启动时,恢复将启动。 但是,在 CRM 服务器应用程序的正常处理过程中,会在后台进行恢复。 可以在恢复完成之前创建 CRM 工作器。 在成功完成恢复之前,无法在 CRM 服务器应用程序进程中使用 CPM。 在这种情况下,CRM 工作器会在尝试注册 CRM 补偿程序时收到“正在恢复”错误代码。 CRM 工作器应轮询,否则会延迟至恢复完成。 恢复时间特定于特定类型的 CRM,在设计 CRM 时应考虑这一点。 长时间恢复不是理想选择。

  • CRM 日志文件的安全性。 如果被拒绝访问 CRM 日志文件,请参阅 COM+ CRM 安全注意事项,了解有关如何在 CRM 日志文件上设置安全性的描述。

  • 可疑事务。 在极少数情况下,DTC 事务可能会进入可疑状态;也就是说,DTC 无法确定事务结果。 在这些情况下,在恢复期间,CRM 会在 CRM 日志文件中维护该事务的日志记录。 当 DTC 解决可疑事务时,再次执行 CRM 恢复将完成事务。

  • 创建和发布 CRM 补偿程序。 CRM 工作器首次注册 CRM 补偿程序时,CRM 基础结构会创建并查询补偿程序,以确定所支持的 CRM 补偿程序接口。 接着立即将其发布。 CRM 补偿程序需要支持无需进行任何干预的方法调用即可创建和发布的功能。 如果无法正确创建 CRM 补偿程序,可能是由于 COM 注册不正确,或者至少不支持一个正确的 CRM 补偿程序接口,则会将错误代码返回给 CRM 工作器。

COM+ 补偿资源管理器概念