1

我们接收位置的奇怪行为:

RL_REPRESENTATIVE正在等待来自 REPRESENTATIVE 表的通知(字段:(PK)id、fname、lname 等)。

RL_CLIENT_REPRESENTATIVE正在等待来自 CLIENT_REPRESENTATIVE 表的通知(字段:(FK)id_rep、(FK)id_client)。

当两个位置都处于活动状态并且我在 CLIENT_REPRESENTATIVE.id_rep 表中提交更改时,我会收到一些警告(显然来自RL_REPRESENTATIVE)。

The adapter "WCF OracleDB" raised an error message. Details "System.InvalidOperationException: The notification query returned an error. Info="Error". Source="Data". Type="Change".
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.Notification_TryReceive(OracleCommonExecutionHelper executionHelper, Message& wcfMessage)
   at Microsoft.Adapters.OracleDB.OracleDBInboundContract.TryReceive(TimeSpan timeout, Message& message, IInboundReply& reply)
   at Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.TryReceive(TimeSpan timeout, Message& message)
   at System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive(TimeSpan timeout, RequestContext& requestContext)
   at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive(TimeSpan timeout, RequestContext& requestContext)".

The adapter "WCF OracleDB" raised an error message. Details "The WCF service host at address oracledb://d01-isis:1521/D01ISIS/Dedicated?CallingTable=REPRESENTATIVE has faulted and as a result no more messages can be received on the corresponding receive location. To fix the issue, BizTalk Server will automatically attempt to restart the service host.".

否则,由 CLIENT_REPRESENTATIVE 中的修改激活的过程不会出现任何问题。

(如果我更新 CLIENT_REPRESENTATIVE 中的 id_client - 错误来自另一个订阅来自 CLIENT 表的通知的接收位置。)

还有两个线索:

  • 如果我禁用RL_REPRESENTATIVE,则不会出现警告。

  • 如果我同时更新 CLIENT_REPRESENTATIVE.id_rep 和 REPRESENTATIVE.fname 并在同一个事务中同时提交,则不会出现警告。

请注意,两个表中都没有触发器,我所有的超时都设置为近 24 小时。

我怀疑 FK 约束以最终向端口发送通知的方式完成其工作,但我从未收到我应该收到的实际消息。

问题:Oracle 中是否有控制此行为的参数?有没有任何 Biztalk 开发人员遇到过这个问题?

4

2 回答 2

0

它可能是:

  • 保存事物的顺序。
  • 交易问题,在单独的交易中接收位置,因此看起来相关项目丢失
  • 与事务问题相关的锁定问题

追踪它的方法是在数据库上设置分析,并准确查看哪些命令以何种顺序发送。

于 2011-11-21T21:54:48.783 回答
0

最后,解决方案是将所有接收位置(NotifyOnListenerStart)中的标志更改为“false”。

经过进一步的开发,这个解决方案还没有完成 - 错误触发再次发生 - 所以我将检查切换到关闭,直到我(或其他人)找到正确的解决方案。

编辑:这是 FK 的副作用,更改其值似乎会触发包含 PK 的表中的更改通知(尽管没有)。

于 2012-01-12T16:19:26.133 回答