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

BizTalk 2013:如何通过SQL查询获取挂起消息的接收文件名?

BizTalk 2013 通过SQL查询获取挂起消息关联的接收文件详情

完全可以通过SQL查询实现,核心是关联BizTalk的挂起消息表与消息上下文属性表,以下是具体方案:

核心关联逻辑

通过文件适配器接收的消息,其文件名、路径等详情会以上下文属性的形式存储,你需要关联以下关键表:

  • 挂起消息基础信息:BizTalkMsgBoxDb.dbo.SuspendedQueue
  • 消息上下文属性(含接收文件属性):BizTalkMsgBoxDb.dbo.MessageContextProperties
  • 接收端口/位置配置:BizTalkMgmtDb.dbo.ReceivePort、BizTalkMgmtDb.dbo.ReceiveLocation

示例查询语句

SELECT 
    sq.MessageID,
    sq.ErrorDescription,
    sq.SuspendTime,
    mcp.PropertyValue AS 接收文件名,
    rp.Name AS 接收端口名,
    rl.Name AS 接收位置名
FROM 
    BizTalkMsgBoxDb.dbo.SuspendedQueue sq
INNER JOIN 
    BizTalkMsgBoxDb.dbo.MessageContextProperties mcp 
    ON sq.MessageID = mcp.MessageID
INNER JOIN 
    BizTalkMgmtDb.dbo.ReceivePort rp 
    ON mcp.ReceivePortID = rp.ID
INNER JOIN 
    BizTalkMgmtDb.dbo.ReceiveLocation rl 
    ON rp.ID = rl.ReceivePortID
WHERE 
    -- 过滤文件适配器专属的接收文件名属性
    mcp.PropertyName = 'ReceivedFileName'
    AND mcp.PropertyNamespace = 'http://schemas.microsoft.com/BizTalk/2003/file-properties'
    -- 可按需添加时间范围过滤,比如查询近7天的挂起消息
    -- AND sq.SuspendTime >= DATEADD(day, -7, GETDATE())

注意事项

  • 若部署了多个MessageBox数据库,需针对对应的MsgBox库执行查询
  • 仅文件适配器接收的消息会携带ReceivedFileName属性,HTTP、WCF等其他适配器无该字段
  • 若上述查询无结果,可尝试关联BizTalkMsgBoxDb.dbo.MessageContextPromotedProperties表(部分场景下属性会存储在此),关联逻辑与上述一致
  • 如需文件大小详情,可添加PropertyName = 'FileSize'的条件,同样使用文件属性命名空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:52:08