BizTalk 2013 R2 XLANG - 将状态持久保存到数据库时发生异常

时间:2017-08-08 23:27:50

标签: biztalk biztalk-2013 biztalk-orchestrations

我正在使用BizTalk 2013 R2。我有一个编排,我调用帮助程序类来调用Web服务(为了降低延迟)。该类是Serializable类。 Orchestration成功构建。当我从POSTMan测试解决方案时,它工作正常。

但是对于每次成功的回复,我也会在事件日志中遇到异常。

for i,j in zip(List_1,List_2):
   j = database1.loc[database1['Categories'] == i]

数据库错误伴随此持久性错误。

  

以下存储过程调用失败:“{call [dbo]。[bts_UpdateMsgbox_XXXXXX](?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?)}“。 SQL Server返回错误字符串:“警告:已强制执行连接顺序,因为使用了本地连接提示。;警告:已强制执行连接顺序,因为使用了本地连接提示。;忽略了重复键。”。

我在形状调用.net助手类中添加了NameError: name 'y' is not defined 。然后我注意到业务流程在第一次运行时运行了两次它抛出了Xlang - Persistence错误和数据库 - “忽略了重复键”错误,然后业务流程第二次运行并且响应成功完成。

Event log trace

很明显,我的业务流程运行了两次。然后我在形状调用助手类周围添加了范围。范围的事务类型为“无”。

然后解决了Xlang Persistence错误问题。

为什么我需要在调用之外添加额外的范围才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

这样的错误通常表明您的BizTalkMsgBoxDb性能不佳。 最初我建议运行BizTalk Health Monitor,这将指出最明显的原因。很可能有很多僵尸/孤儿消息,这个工具也可以帮助清理。

另请参阅数据库优化:

  • 数据库设置不正确
  • 大型索引碎片
  • 大量暂停实例 - 应定期终止

(详情请参阅https://msdn.microsoft.com/en-us/library/cc296892%28v=bts.10%29.aspx

还要考虑:

如果事件无效,则需要评估数据库服务器磁盘性能。您可能需要迁移到更快的存储