2

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

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

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

4

2 回答 2

0

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

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

于 2014-01-30T19:26:51.897 回答
0

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

通过查看作业的来源,它使用光标 ( , lol)[dbo].[bts_CleanupDeadProcesses]在表中循环查找“死”心跳。dbo.ProcessHeartbeatsbtsProcessCurse

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

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

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

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

看起来其他人在这里遇到了类似的情况

而且这里还有朱晓东对心跳机制如何工作的详细介绍

于 2012-10-23T13:25:50.917 回答