Biztalk 2009:SQL到WCF-SQL适配器迁移;编排没有收到消息?

时间:2014-12-10 09:02:25

标签: sql migration biztalk

来自主题, 我有一个接收位置,当前使用sql adapter(接收端口)来调用(轮询?)存储过程。存储过程返回FOR XML结果。 接收器然后激活一个编排,该编排接收消息并将消息中的数据填充到一些变量(表达形状)中。

Orchestration看起来像:

LongScope[ AtomicScope[ Receive location -> Expression ] ][Error handling]

我尝试使用XMLpolling直接迁移到wcf-sql作为InboundOperationType,但它在变量赋值期间抛出一个空异常(我假设)。

其他细节: 我通过使用发送端口过滤pipelineName来从接收器捕获消息。 sql和wcf-sql adapter

检索的消息略有不同

SQL:

<rootNode xmlns="namespace"><row data1="data1" data2 = "data2" /></rootnode>

WCF-SQL:

<rootNode xmlns="namespace"><row data1="data1" data2 = "data2" xmlns=""/></rootnode>

如果this msdn post is correct

,那该怎么办?

我也进入了编排调试器。奇怪的是,当使用sql适配器时,消息仍然是= null,但是varibles被分配没有问题。我还尝试在接收端口之后直接添加发送端口来转储消息。什么都没出来

我将不胜感激任何信息/建议/解决方案 如果我遗漏任何信息,请告诉我。

不相关的信息: 截至本文,接收端口甚至不再触发。我不知道为什么。重启PC。 此外,我怀疑Biztalk给了我的磨牙症并导致我需要6颗牙齿填充物

2 个答案:

答案 0 :(得分:1)

SQL中的XML与WCF-SQL之间的区别与您链接的MSDN post无关。

在第二个XML(WCF-SQL适配器)中,行节点没有命名空间。在第一个XML(SQL适配器)中,行节点继承了默认命名空间&#34; namespace&#34;来自其父母:&#39; root&#39;。

关于接收端口不再触发: 您确定您的主机实例仍在运行吗?

答案 1 :(得分:0)

我的解决方案: 我在存储过程中添加了“xmlns ='namespace'”作为“数据”。 适配器识别并删除它(因为它与父节点相同),允许我使用旧模式。

填料: 所以我使用WCF-SQL适配器的输出生成了一个模式, 但是我无法用它来替换旧的,因为表达式形状将无法识别其子元素(var = messageObject。 childElement ) 我创建了一张地图,将新地图映射回旧地图。 但这没有用,因为它们都共享相同的命名空间,而biztalk在运行时抱怨它无法决定使用哪个架构。