2012-10-23 32 views
2

将我们的大部分BT应用程序从BizTalk 2009迁移到BizTalk 2010环境之后,我们开始了删除旧应用程序和未使用主机的工作。在这个过程中,我们结束了一个僵尸主机实例。如何从BTMessageBox中删除主机实例僵尸

这导致bts_CleanupDeadProcesses启动失败,错误为“作为用户执行:RH \ sqladmin”。找不到存储过程'dbo.int_ProcessCleanup_ProcessLabusHost'。 [SQLSTATE 42000](错误2812)。该步骤失败。“

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

回答

0

(我假设主机实例过程不会在你的服务已经不复存在,并且SQL代理作业失败)

从看[dbo].[bts_CleanupDeadProcesses]作业的来源,它遍历dbo.ProcessHeartbeats表中有游标(btsProcessCurse,哈哈)正在寻找'死'的听觉。

每个流程实例都有自己的存储过程的清理和int_ProcessCleanup_[HostName]的心跳监视一个存储过程调用,即bts_ProcessHeartbeat_[HostName](虽然FWR的存储过程调用它@ApplicationName),由WHERE (s.dtNextHeartbeatTime < @dtCurrentTime)过滤。

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

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

但是,我不会明显在您的产品环境中执行此操作,除非您确认此操作是首先进行试运行。

它看起来像别人卡住了类似的情况here

而且也有很好的潜入的心跳机制如何工作的小东朱细节here

+0

谢谢。重新创建主机进行第二次尝试。 第一次重新创建主机,我得到了主机的事件。修改dtNextHeartBeat并重新创建主机后。我只有一次该主机,并且可以从BizTalk管理控制台中删除它以摆脱主机。 – user1768135

+0

我建议你运行这个过去的MS PSS--我不希望你通过纠正这些僵尸记录来消除整个产品的支持。这也意味着升级过程并不完全干净,您可能需要提交错误以便解决此问题。 –