受信場所での奇妙な動作:
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 テーブルからの通知をサブスクライブする別の受信場所からエラーが発生します。)
さらに2つの手がかり:
RL_REPRESENTATIVEを無効にすると、警告は表示されません。
CLIENT_REPRESENTATIVE.id_rep と REPRESENTATIVE.fname の両方を更新し、同じトランザクションで両方をコミットすると、警告は表示されません。
どちらのテーブルにもトリガーがなく、すべてのタイムアウトがほぼ 24 時間に設定されていることに注意してください。
FK 制約は、最終的にポートに通知を送信する方法で機能すると思われますが、受信するはずの実際のメッセージを取得することはありません。
質問: Oracle には、この動作を制御するパラメーターはありますか? この問題に遭遇した Biztalk 開発者はいますか?