Contents

Introduction

Informações de Apoio

Componentes Utilizados

Problema

Solução

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