【问题标题】:How can I remove Host Instance Zombies from BTMessageBox如何从 BTMessageBox 中删除主机实例僵尸
【发布时间】:2012-10-13 07:42:54
【问题描述】:

在将我们的大部分 BT 应用程序从 BizTalk 2009 迁移到 BizTalk 2010 环境后,我们开始着手删除旧应用程序和未使用的主机。在这个过程中,我们最终得到了一个僵尸主机实例。

这导致 bts_CleanupDeadProcesses 启动失败并出现错误“以用户身份执行:RH\sqladmin.找不到存储过程“dbo.int_ProcessCleanup_ProcessLabusHost”。 [SQLSTATE 42000](错误 2812)。步骤失败。”

查看CleanupDeatProcess进程后,在BTMsgBox.ProcessHeartBeats表中找到了僵尸主机实例,dtNextHeartbeatTime设置为主机被移除的时间。

【问题讨论】:

    标签: biztalk biztalk-2009


    【解决方案1】:

    (我假设主机实例进程不再存在于您的服务中,并且 SQL 代理作业失败)

    通过查看 [dbo].[bts_CleanupDeadProcesses] 作业的源,它使用光标(btsProcessCurse,哈哈)循环遍历 dbo.ProcessHeartbeats 表,寻找“死”心跳。

    每个流程实例都有自己的清理存储过程int_ProcessCleanup_[HostName] 和一个供心跳看门狗调用的存储过程,即bts_ProcessHeartbeat_[HostName](尽管FWR SPROC 将其称为@ApplicationName),由WHERE (s.dtNextHeartbeatTime < @dtCurrentTime) 过滤。

    因此很容易删除已删除/僵尸主机的记录(或者,如果您不那么勇敢,只需将已死主机实例的心跳记录上的 Next dtNextHeartbeatTime 更新到下个世纪的某个时间)。无论哪种方式,SQL 代理作业都应该跳过死实例。

    另一种方法是尝试通过管理控制台重新创建具有相同名称的主机和实例,然后再次(正确地)删除它们。但是,这可能会导致其他问题,因为由于未删除的对象,BizTalk 将无法创建上述 2 个 SPROC。

    但是,在您确认这适用于首先进行试运行之前,我显然不会在您的 prod 环境中执行此操作。

    看起来有人遇到了类似的情况here

    还有朱晓东here对心跳机制工作原理的详细介绍

    【讨论】:

    • 谢谢。重新创建主机在第二次尝试中起作用。第一次重新创建主机时,我遇到了主机。修改 dtNextHeartBeat 并再次重新创建主机后。我只出现了一次主机,可以从 BizTalk 管理控制台中删除它以摆脱主机。
    • 我建议您运行这个过去的 MS PSS - 我不希望您通过更正这些僵尸记录而失去对整个产品的支持。这也表明升级过程并不完全干净,您可能需要提交错误以便解决此问题。
    【解决方案2】:

    你试过 BTSTerminator 吗?这适用于一次性清理。

    http://www.microsoft.com/en-us/download/details.aspx?id=2846

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      相关资源
      最近更新 更多