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