Sommario

Introduzione

Premesse

Componenti usati

Problema

Soluzione

Introduzione

In questo documento viene descritta la quantità massima di dati che è possibile elaborare tramite un messaggio MDS (Message Delivery Service) di Gestione intelligente dei contatti (ICM) e l'architettura sottostante.

Premesse

Quando si eseguono ricerche nel database con ICM (utilizzando dbworker.exe come processo per fornire l'interfaccia tra il router e il database esterno), è possibile elaborare una quantità massima di dati tramite un messaggio MDS.

La quantità totale di dati di risposta SQL (Structured Query Language) + intestazione di risposta DBW (Db Worker Process) non può superare i 4096 byte. Limite hardcoded per un messaggio MDS.

Componenti usati

Le informazioni di questo documento si basano sull'ICM versione 11.6

Problema

Se è stato restituito un numero eccessivo di dati a dbw da SQL Server e dbw non può passarlo al router (RTR), viene generata una condizione di errore simile alla seguente:

06:33:38:639 ra-dbw Traccia: Accoda una richiesta di ricerca

06:33:38:644 ra-dbw Traccia: Thread DBWorker 4 (ID 5612 Tabella:Stores_Reception_BT.SRDB_NEW): Richiesta ricevuta: ID transazione 14583170

06:33:38:658 ra-dbw Traccia: DBWorker Thread 4 (ID 5612),transactionID 14583170, Tentativo di lettura del record:

06:33:38:679 ra-dbw Traccia: Thread DBWorker 4 (ID 5612),transactionID 14583170, riuscito.(...)

06:33:38:735 ra-dbw Traccia: DBWorker transactionID 14583170, non riuscito. risultato=10

06:33:38:745 ra-dbw Traccia: Accoda una richiesta di ricerca

"10" - indica che un numero eccessivo di dati è stato restituito a dbw da SQL Server e che dbw non può passarlo a RTR

Per stampare l'errore, viene utilizzato questo livello di traccia:

dbw trace-level to 3 via Portico (il trace-level 3 deve essere utilizzato solo su raccomandazione di Cisco TAC) e questo trace-level per RTR via trtrace tool(c:\icm\bin):

Di seguito è riportato un esempio di come un messaggio MDS viene formato dal processo DBW:

02:22:01:273 ra-dbw Traccia: Thread DBWorker 2 (ID tabella 15100:ICM_lookup_1): Richiesta ricevuta: ID transazione 3

02:22:01:273 ra-dbw Traccia: DBWorker Thread 2 (ID 15100),transactionID 3, Tentativo di lettura del record:

02:22:01:273 ra-dbw Traccia: Thread DBWorker 2 (ID 15100),ID transazione 3, completato.

02:22:01:273 ra-dbw Traccia: MDS: Entrata in MDSAllocBuffer

02:22:01:273 ra-dbw Traccia: SQLConnection::ImpostaDatiColonna: Dati colonna per colonna 1 Lunghezza = 5

02:22:01:273 ra-dbw Traccia: SQLConnection::ImpostaDatiColonna: Dati colonna per colonna 2 Lunghezza = 0

02:22:01:273 ra-dbw Traccia: SQLConnection::ImpostaDatiColonna: Dati colonna per colonna 3 Lunghezza = 0

02:22:01:273 ra-dbw Traccia: MDS: Entrata in MDSSendInput02:22:01:273 ra-dbw Message Trace: Cliente: dbw invio del messaggio al processo MDS.

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

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

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

00060 00 00 00 00

In questo esempio sono presenti 3 colonne come risultato della query SQL nella tabella configurata, tutte le colonne hanno il tipo VARCHAR(50) nel database.

La risposta contiene 5 byte di dati dalla prima colonna e 0 byte nelle altre 2 colonne.

In base a tale risposta, dbw forma il messaggio MDS in cui ogni colonna è compressa in un campo che consiste di 24 byte di intestazione + 2 byte di lunghezza + PAYLOAD + OFFSET.

Se la colonna non contiene dati, ad esempio Lunghezza = 0, occuperà comunque: 24 byte intestazione + 2 byte lunghezza + 2 byte OFFSET = 28 byte.

Soluzione

Per risolvere questo scenario, è necessario rimuovere le colonne inutilizzate da tabelle/config, ridurre i nomi delle colonne o ridurre le dimensioni dei dati delle colonne.

Documenti correlati:

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