Introduction
Este documento descreve a quantidade máxima de dados que pode ser processada por meio de uma Mensagem do ICM (Intelligent Contact Management) e a arquitetura por trás dela.
Informações de Apoio
Ao executar pesquisas de banco de dados com ICM (usando dbworker.exe como o processo para fornecer a interface entre o roteador e o banco de dados externo), há uma quantidade máxima de dados que pode ser processada através de uma mensagem MDS.
A quantidade total de dados de Resposta de SQL (estruturada query language) + cabeçalho de Resposta de DBW (Db worker process) não pode exceder 4096 bytes. Este é um limite codificado para uma mensagem MDS.
Componentes Utilizados
As informações neste documento são baseadas na versão 11.6 do ICM
Problema
Se muitos dados foram retornados ao dbw do SQL Server e o dbw não pode passá-los ao roteador (RTR), uma condição de erro é gerada, semelhante a esta:
06:33:38:639 ra-dbw Rastreamento: Colocar uma solicitação de pesquisa em fila
06:33:38:644 ra-dbw Rastreamento: DBWorker Thread 4 (ID Tabela 5612:Stores_Reception_BT.SRDB_NEW): Solicitação recebida: ID de transação 14583170
06:33:38:658 ra-dbw Rastreamento: DBWorker Thread 4 (ID 5612),TransactionID 14583170, Tentativa de ler o registro:
06:33:38:679 ra-dbw Rastreamento: DBWorker Thread 4 (ID 5612),TransactionID 14583170, Êxito.(..)
06:33:38:735 ra-dbw Rastreamento: DBWorker transactionID 14583170, Failed! resultado=10
06:33:38:745 ra-dbw Rastreamento: Colocar uma solicitação de pesquisa em fila
"10" - significa que muitos dados foram retornados ao dbw do SQL Server e o dbw não pode passá-los ao RTR
Para imprimir o erro, este nível de rastreamento é usado:
dbw trace-level para 3 via Portico (o nível de rastreamento 3 deve ser usado somente sob recomendação do Cisco TAC) e este nível de rastreamento para RTR através da ferramenta rtrtrace(c:\icm\bin):
Aqui está um exemplo de como uma mensagem MDS está sendo formada pelo processo DBW:
02:22:01:273 ra-dbw Rastreamento: Thread 2 do DBWorker (ID 15100 Tabela:ICM_lookup_1): Solicitação recebida: ID de transação 3
02:22:01:273 ra-dbw Rastreamento: DBWorker Thread 2 (ID 15100),TransactionID 3, Tentativa de ler o registro:
02:22:01:273 ra-dbw Rastreamento: DBWorker Thread 2 (ID 15100),TransactionID 3, Succeeded.
02:22:01:273 ra-dbw Rastreamento: MDS: Inserindo MDSAllocBuffer
02:22:01:273 ra-dbw Rastreamento: SQLConnection::SetupColumnData: Dados da coluna 1 Comprimento = 5
02:22:01:273 ra-dbw Rastreamento: SQLConnection::SetupColumnData: Dados da coluna 2 Comprimento = 0
02:22:01:273 ra-dbw Rastreamento: SQLConnection::SetupColumnData: Dados da coluna 3 Comprimento = 0
02:22:01:273 ra-dbw Rastreamento: MDS: Inserindo Rastreamento de Mensagem MDSSendInput02:22:01:273 ra-dbw: Cliente: dbw enviando mensagem para o processo MDS.
EMT: classe=2 tipo=1 tamanho do corpo=116
MDS: rsrvd=0 hdrsize=16 tamanhos de corpo=100 src=56 dst=1 prioridade=alta
MDS: flags=02 { side_a } vtime=0006f03b seqno=0000 class=4 type=16
00000 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 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
Neste exemplo, há 3 colunas como resultado de SQL-query para tabela configurada, todas as colunas têm o tipo VARCHAR(50) no DB.
A Resposta contém 5 bytes de dados da 1ª coluna e 0 bytes nas outras 2 colunas.
Com base nessa resposta, o dbw forma a mensagem MDS em que cada coluna é empacotada no campo que consiste em cabeçalho de 24 bytes + comprimento de 2 bytes + PAYLOAD + OFFSET.
Se a coluna não contiver dados, por exemplo, Comprimento = 0, ela ainda ocupará: Cabeçalho de 24 bytes + 2 bytes de comprimento + 2 bytes OFFSET = 28 bytes.
Solução
Para contornar esse cenário, você deverá remover colunas não utilizadas de tabelas/configurações ou reduzir nomes de colunas ou reduzir tamanhos de dados de colunas.
Documentos relacionados:
https://www.cisco.com/c/en/us/support/docs/customer-collaboration/unified-contact-center-enterprise/116215-configure-dblookup-00.html