You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从BizTalkMgmtDB查询BizTalk主机实例的运行状态?

查询BizTalk主机实例的实时运行状态

BizTalkMgmtDB中的adm_HostInstance等静态存储表仅记录主机实例的配置信息(比如是否禁用),并不存储实时的运行/停止状态。要获取主机实例的当前状态,可通过以下方式实现:

1. 使用BizTalk内置存储过程

BizTalk提供了bts_GetRunningHostInstances存储过程,专门用于获取实时运行的主机实例列表,执行后能直接看到正在运行的实例:

EXEC bts_GetRunningHostInstances;

该存储过程返回的结果集包含HostName、ServerName、Running(1表示运行中,0表示未运行)等核心字段。

2. 结合WMI查询(覆盖更全面状态)

如果需要获取“不适用”这类特殊状态(比如隔离主机的状态,其依赖IIS等宿主进程),可以通过WMI查询root/MicrosoftBizTalkServer命名空间下的MSBTS_HostInstance类,示例PowerShell命令:

Get-WmiObject -Namespace root/MicrosoftBizTalkServer -Class MSBTS_HostInstance | Select-Object HostName, ServerName, ServiceState

其中ServiceState对应的状态映射:

  • 1: 已停止
  • 4: 运行中
  • 7: 已暂停
  • 其他值对应过渡状态(如启动中、暂停中)

优化原有SQL查询(关联配置与运行状态)

如果需要将配置信息和运行状态整合展示,可以把存储过程的结果与原有查询关联:

SELECT 
    h.Name AS HostInstanceName,
    CASE 
        WHEN h.HostType = 1 THEN 'In-Process'
        WHEN h.HostType = 2 THEN 'Isolated'
        ELSE 'Unknown' 
    END AS HostType,
    s.Name AS ServerName,
    CASE 
        WHEN hi.DisableHostInstance = -1 THEN 'Yes'
        WHEN hi.DisableHostInstance = 0 THEN 'No'
        ELSE 'Unknown' 
    END AS IsDisabled,
    CASE 
        WHEN rh.Running = 1 THEN '运行中'
        ELSE '已停止'
    END AS CurrentState
FROM 
    adm_HostInstance hi
JOIN 
    adm_Server2HostMapping shm ON hi.Svr2HostMappingId = shm.Id
JOIN 
    adm_Host h ON shm.HostId = h.Id
JOIN 
    adm_Server s ON shm.ServerId = s.Id
LEFT JOIN (
    SELECT HostName, ServerName, Running 
    FROM bts_GetRunningHostInstances()
) rh ON h.Name = rh.HostName AND s.Name = rh.ServerName
ORDER BY 
    HostInstanceName;

注意:隔离主机的状态无法通过SQL直接获取“不适用”标识,需通过WMI或BizTalk管理控制台查看。

内容的提问来源于stack exchange,提问作者Sanjay Adkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 17:47:36