Inhalt

Einführung

Hintergrundinformationen

Verwendete Komponenten

Problem

Lösung

Einführung

Dieses Dokument beschreibt die maximale Datenmenge, die verarbeitet werden kann, wenn eine Nachricht des Intelligent Contact Management (ICM) Message Delivery Service (MDS) und die zugrunde liegende Architektur verwendet werden.

Hintergrundinformationen

Beim Durchführen von Datenbanksuchen mit ICM (wobei dbworker.exe als Prozess zur Bereitstellung der Schnittstelle zwischen Router und externer Datenbank verwendet wird) gibt es eine maximale Datenmenge, die durch eine MDS-Nachricht verarbeitet werden kann.

Die Gesamtmenge der strukturierten Abfragesprache (SQL)-Antwortdaten + DBW-Antwort-Header (DB-Workerprozess) darf 4096 Byte nicht überschreiten. Dies ist ein hardcodierter Grenzwert für eine MDS-Nachricht.

Verwendete Komponenten

Die Informationen in diesem Dokument basieren auf der ICM-Version 11.6.

Problem

Wenn zu viele Daten von SQL Server an dbw zurückgegeben wurden und dbw sie nicht an den Router (RTR) übergeben kann, wird eine Fehlerbedingung generiert, ähnlich der folgenden:

06:33:38:639 ra-dbw Trace: Warteschlange einer Suchanfrage

06:33:38:644 ra-dbw Trace: DBWorker Thread 4 (ID 5612 Tabelle:Stores_Reception_BT.SRDB_NEW): Empfangene Anfrage: Transaktions-ID: 14583170

06:33:38:658 ra-dbw Trace: DBWorker Thread 4 (ID 5612),transactionID 14583170, Versuch, den Datensatz zu lesen:

06:33:38:679 ra-dbw Trace: DBWorker Thread 4 (ID 5612),TransactionID 14583170, Succeeded.(...)

06:33:38:735 ra-dbw Trace: DBWorker transactionID 14583170, Failed! Ergebnis = 10

06:33:38:745 ra-dbw Trace: Warteschlange einer Suchanfrage

"10" - bedeutet, dass zu viele Daten von SQL Server an dbw zurückgegeben wurden und dbw sie nicht an den RTR übergeben kann.

Zum Drucken des Fehlers wird die folgende Ablaufverfolgungsebene verwendet:

dbw trace level to 3 via Portico (Trace Level 3 ist nur auf Empfehlung des Cisco TAC zu verwenden) und diese Trace-Level für RTR via rtrtrace Tool(c:\icm\bin):

Hier ein Beispiel, wie eine MDS-Nachricht vom DBW-Prozess gebildet wird:

02:22:01:273 ra-dbw Trace: DBWorker Thread 2 (ID 15100 Tabelle:ICM_lookup_1): Empfangene Anfrage: Transaktions-ID 3

02:22:01:273 ra-dbw Trace: DBWorker Thread 2 (ID 15100),transactionID 3, Versuch, den Datensatz zu lesen:

02:22:01:273 ra-dbw Trace: DBWorker Thread 2 (ID 15100),TransactionID 3, Erfolgreich.

02:22:01:273 ra-dbw Trace: MDS: Eingeben von MDSAllocBuffer

02:22:01:273 ra-dbw Trace: SQLConnection::SetupColumnData: Spaltendaten für Spalte 1 Länge = 5

02:22:01:273 ra-dbw Trace: SQLConnection::SetupColumnData: Spaltendaten für Spalte 2 Länge = 0

02:22:01:273 ra-dbw Trace: SQLConnection::SetupColumnData: Spaltendaten für Spalte 3 Länge = 0

02:22:01:273 ra-dbw Trace: MDS: Eingeben von MDSSendInput02:22:01:273 ra-dbw Message Trace: Kunde: dbw sendet Nachricht an den MDS-Prozess.

EMT: class=2 type=1 bodysize=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

0000 03 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 |........

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

00020 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 |........

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

00040 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 |........

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

00060 00 00 00 00

In diesem Beispiel gibt es 3 Spalten als Ergebnis einer SQL-Abfrage zur konfigurierten Tabelle, alle Spalten haben VARCHAR(50)-Typ in DB.

Die Response enthält 5 Byte Daten aus der ersten Spalte und 0 Bytes aus den anderen 2 Spalten.

Basierend auf dieser Antwort wird die MDS-Nachricht erstellt, in der jede Spalte in einem Feld gepackt ist, das aus 24 Byte Header + 2 Byte Länge + PAYLOAD + OFFSET besteht.

Wenn die Spalte keine Daten enthält, z. B. Length = 0, belegt sie weiterhin: 24 Byte Header + 2 Byte Länge + 2 Byte OFFSET = 28 Byte.

Lösung

Um dieses Szenario zu umgehen, sollten Sie nicht verwendete Spalten aus Tabellen/Konfig. entfernen, Spaltennamen verkleinern oder Spaltendatengrößen verkleinern.

Zugehörige Dokumente:

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