2017-08-08 12 views
1

私はBizTalk 2013 R2を使用しています。私はオーケストレーションを持っています。ここでは、helperクラスを呼び出してWebサービス(低レイテンシー)を呼び出すようにしています。クラスはSerializableクラスです。オーケストレーションは正常に構築されます。 POSTManからの解決策をテストしたところ、正常に動作します。BizTalk 2013 R2 XLANG - データベースに状態を維持するときに例外が発生しました

しかし、すべての成功の応答については、私はまた、イベントログで例外以下になりつつあります。

xlang/s engine event log entry: An unrecoverable exception (see the 'inner exception' below) has occurred. 
Service Name: Orchestration Name 
Service Id: df34c579-a9e6-5696-e322-b80210d1f723 
Instance Id: 0512ae45-c89c-4ffc-9bd2-332b854d4965  
An exception occurred when persisting state to the database.  
Exception type: PersistenceException 

Source: Microsoft.XLANGs.BizTalk.Engine 
Target Site: Void Commit() 
The following is a stack trace that identifies the location where the 
     exception occurred 
     at Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.Commit() 
     at 

    Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.ScheduleComplete(Boolean terminate) 
      at Microsoft.XLANGs.Core.Service.Persist(Boolean dehydrate, Context ctx, Boolean idleRequired, Boolean finalPersist, Boolean bypassCommit, Boolean terminate) 
      at Microsoft.XLANGs.Core.ServiceContext.OnCommit() 
      at "OrchestrationInstanceName".segment0(StopConditions stopOn) 
      at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp) 

Additional error information: 

A batch item failed persistence Item-ID 9b508582-438f-442d-a320-3ff7d9dd87ed OperationType MAIO_CommitBatch Status -1061151938 ErrorInfo A database failure occurred due to an unexpected failure. . 

Exception type: PersistenceItemException 

このパーシスタンスエラーを伴うデータベースエラーがありました。

次のストアド・プロシージャ・コールは失敗しました: "{[bts_UpdateMsgbox_XXXXXX](、、、、、、、、、、、、[DBO]呼び出します。????????????? 「?」、「?」、「?」、「?」、「? SQL Serverはエラー文字列を返しました: "警告:ローカル結合ヒントが使用されているため、結合順序が強制されました;警告:ローカル結合ヒントが使用されているため結合順序が強制されました。

system.diagnostics.traceという形で.netヘルパークラスを呼び出しました。次に、オーケストレーションが最初の実行で2回実行されていることに気付きました。これは、Xlang - 持続性エラーとデータベースをスローします。 "重複キーは無視されました"というエラーが表示され、オーケストレーションが2回目に実行され、

Event log trace

私のオーケストレーションが二回実行されることは明らかです。次にヘルパークラスを呼び出すシェイプの周りにスコープを追加しました。スコープのトランザクションタイプは「なし」です。

次に、Xlang Persistenceエラーの問題が解決されました。

なぜこの仕事をエラーなく行うために余分なスコープをコールする必要がありますか?

+0

これは繰り返し問題ですか?すべてのSQLジョブがエラーなしで有効になり、実行されていますか? –

+0

@ Johns-305オーケストレーションの外部アセンブリへの呼び出しの周りに余分なスコープを追加するまでは、一貫した問題でした。はい、環境には他の問題はありませんでした。 – Dijkgraaf

+0

呼び出されたWebサービスの再試行ポリシーは何ですか? https://msdn.microsoft.com/en-us/library/aa480191.aspx –

答えて

0

このようなエラーは通常、BizTalkMsgBoxDbのパフォーマンスが悪いことを示しています。 最初に私はBizTalk Health Monitorを実行することをお勧めします。これは最も明白な理由を指摘します。ほとんどの場合、ゾンビ/孤立メッセージがたくさんあり、このツールも駆除に役立ちます。してくださいこれらは定期的に

終端する必要があります( - 一時停止インスタンスの

  • 間違ったデータベース設定
  • 大きなインデックスの断片化
  • 大量:

    また、データベースの最適化を見てみましょう詳細はhttps://msdn.microsoft.com/en-us/library/cc296892%28v=bts.10%29.aspxを参照してください)

    も考えてみましょう:

    • 追跡アーティファクトやイベントの量を減らす歴史https://msdn.microsoft.com/en-us/library/aa558715.aspx
    • を追跡するための時間を削減 - 非必須オフ(生産のためのベスト・プラクティスは、すべてのいずれかを持っていません)

    助けにならないイベントの場合は、データベースサーバーのディスクパフォ​​ーマンスを評価する必要があります。より速いストレージに移行する必要があるかもしれません。

+0

これは、外部アセンブリへの呼び出しの周りに余分なスコープを入れた後に、永続エラーが消え去った理由を説明していません。 – Dijkgraaf

関連する問題