2012-10-23 33 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--我不希望你通過糾正這些殭屍記錄來消除整個產品的支持。這也意味着升級過程並不完全乾淨,您可能需要提交錯誤以便解決此問題。 –