内容

概要

背景説明

使用するコンポーネント

問題

解決方法

概要

このドキュメントでは、Intelligent Contact Management(ICM)Message Delivery Service(MDS)メッセージおよびその背後のアーキテクチャを介して処理できるデータの最大量について説明します。

背景説明

ICMを使用してデータベース検索を実行すると（ルータと外部データベース間のインターフェイスを提供するプロセスとしてdbworker.exeを使用）、MDSメッセージで処理できるデータ量を超えるデータ量が存在します。

構造化クエリ言語(SQL)応答データ+ dbワーカープロセス(DBW)応答ヘッダーの合計量は4096バイトを超えることはできません。これは、MDSメッセージのハードコードされた制限です。

使用するコンポーネント

このドキュメントの情報は、ICMバージョン11.6に基づくものです

問題

SQL Serverからdbwに返されるデータが多すぎて、dbwがルータ(RTR)に渡すことができない場合、次のようなエラー状態が生成されます。

06:33:38:639 ra-dbwトレース：ルックアップ要求をキューに入れる

06:33:38:644 ra-dbwトレース：DBWorkerスレッド4 （ID 5612テーブル：Stores_Reception_BT.SRDB_NEW）:受信した要求：transactionID 14583170

06:33:38:658 ra-dbwトレース：DBWorker Thread 4 (ID 5612),transactionID 14583170, Attempt to read the record:

06:33:38:679 ra-dbwトレース：DBWorker Thread 4 (ID 5612),transactionID 14583170, Succeeded.(..)

06:33:38:735 ra-dbwトレース：DBWorker transactionID 14583170, Failed!結果=10

06:33:38:745 ra-dbwトレース：ルックアップ要求をキューに入れる

「10」:SQL Serverからdbwに返されたデータが多すぎて、dbwがRTRに渡せないことを意味します

エラーを印刷するには、次のトレースレベルを使用します。

ポートティコ経由で3にdbwトレースレベル（トレースレベル3はCisco TACの推奨でのみ使用）、rtrtraceツール(c:\icm\bin)経由でRTRに対してこのトレースレベルを使用します。

DBWプロセスによってMDSメッセージがどのように形成されているかの例を次に示します。

02:22:01:273 ra-dbwトレース：DBWorker Thread 2 (ID 15100 Table:ICM_lookup_1):受信した要求：transactionID 3

02:22:01:273 ra-dbwトレース：DBWorker Thread 2 (ID 15100),transactionID 3, Attempt to read the record:

02:22:01:273 ra-dbwトレース：DBWorker Thread 2 (ID 15100),transactionID 3, Succeeded.

02:22:01:273 ra-dbwトレース：MDS：MDSAllocBufferの入力

02:22:01:273 ra-dbwトレース：SQLConnection::SetupColumnData:列1の列データ長= 5

02:22:01:273 ra-dbwトレース：SQLConnection::SetupColumnData:列2の列データ長= 0

02:22:01:273 ra-dbwトレース：SQLConnection::SetupColumnData:列3の列データ長= 0

02:22:01:273 ra-dbwトレース：MDS：MDSSendInput02:22:01:273 ra-dbwメッセージトレースの入力：クライアント:dbwがMDSプロセスにメッセージを送信しています。

EMT:  class=2 type=1 bodisize=116

MDS：  rsrvd=0 hdrsize=16 bodysize=100 src=56 dst=1 priority=high

MDS：  flags=02 { side_a } vtime=0006f03b seqno=0000 class=4 type=16

00000 03 00 00 00 00 00 00 00 00 |.......|

00008 03 00 00 00 8e 13 00 00 |.......|

00010 02 00 00 00 00 00 00 00 00 |.......|

00018 00 00 00 00 00 00 00 00 00 00 |.......|

00020 00 00 00 00 05 00 38 30 |......80|

00028 31 30 34 00 8c 13 00 00 |104.....|

00030 02 00 00 00 00 00 00 00 00 |.......|

00038 00 00 00 00 00 00 00 00 00 00 |.......|

00040 00 00 00 00 00 00 00 00 00 00 |.......|

00048 8d 13 00 00 02 00 00 00 |.......|

00050 00 00 00 00 00 00 00 00 00 |.......|

00058 00 00 00 00 00 00 00 00 00 00 |.......

00060 00 00 00 00

この例では、SQLクエリーの結果として3つの列が構成され、すべての列のVARCHAR(50)型がDBに存在します。

応答には、最初の列の5バイトのデータと、他の2つの列の0バイトのデータが含まれます。

この応答dbwに基づいて、MDSメッセージが形成されます。各カラムは、24バイトのヘッダー+ 2バイト長+ PAYLOAD + OFFSETで構成されるフィールドにパックされます。

列にデータが含まれていない場合（長さ= 0など）、次の値が使用されます。24バイトヘッダー+ 2バイト長+ 2バイトOFFSET = 28バイト。

解決方法

このシナリオを回避するには、使用していない列をテーブル/構成から削除するか、列名を縮小するか、列のデータ・サイズを縮小します。

関連ドキュメント:

https://www.cisco.com/c/en/us/support/docs/customer-collaboration/unified-contact-center-enterprise/116215-configure-dblookup-00.html