我们接收位置的奇怪行为:
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 开发人员遇到过这个问题?