目录

简介

背景信息

使用的组件

问题

解决方案

简介

本文档介绍通过智能联系管理(ICM)消息传送服务(MDS)消息及其背后的体系结构可以处理的最大数据量。

背景信息

使用ICM执行数据库查找时（使用dbworker.exe作为提供路由器和外部数据库之间的接口的过程），数据量比通过MDS消息处理的数据量最大。

结构化查询语言(SQL)响应数据+数据库工作进程(DBW)响应报头的总数不能超过4096字节。这是MDS消息的硬编码限制。

使用的组件

本文档中的信息基于ICM版本11.6

问题

如果从SQL Server向dbw返回了太多数据，而dbw无法将其传递到路由器(RTR)，则会生成错误条件，类似于以下情况：

06:33:38:639 ra-dbw跟踪：对查找请求排队

06:33:38:644 ra-dbw跟踪：DBWorker线程4（ID 5612表：Stores_Reception_BT.SRDB_NEW）：已接收请求：事务ID 14583170

06:33:38:658 ra-dbw跟踪：DBWorker线程4(ID 5612),transactionID 14583170，尝试读取记录：

06:33:38:679 ra-dbw跟踪：DBWorker线程4(ID 5612),transactionID 14583170，成功。(..)

06:33:38:735 ra-dbw跟踪：DBWorker transactionID 14583170，失败！结果=10

06:33:38:745 ra-dbw跟踪：对查找请求排队

“10” — 表示从SQL Server向dbw返回了太多数据，而dbw无法将其传递到RTR

要打印错误，请使用此跟踪级别：

dbw trace-level通过Portico（trace level 3仅在思科TAC的建议下使用）到3，此trace-level用于通过rtrace工具(c:\icm\bin)进行RTR:

以下是DBW进程如何形成MDS消息的示例：

02:22:01:273 ra-dbw跟踪：DBWorker线程2(ID 15100表：ICM_lookup_1):已接收请求：事务ID 3

02:22:01:273 ra-dbw跟踪：DBWorker线程2(ID 15100),transactionID 3，尝试读取记录：

02:22:01:273 ra-dbw跟踪：DBWorker线程2(ID 15100)，事务ID 3，成功。

02:22:01:273 ra-dbw跟踪：MDS:输入MDSAllocBuffer

02:22:01:273 ra-dbw跟踪：SQLConnection::SetupColumnData:列1的列数据长度= 5

02:22:01:273 ra-dbw跟踪：SQLConnection::SetupColumnData:列2的列数据长度= 0

02:22:01:273 ra-dbw跟踪：SQLConnection::SetupColumnData:列3的列数据长度= 0

02:22:01:273 ra-dbw跟踪：MDS:输入MDSSendInput02:22:01:273 ra-dbw消息跟踪：客户端：dbw正在向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

00000 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

在本示例中，由于对已配置表执行SQL查询，因此有3列，所有列在DB中都具有VARCHAR(50)类型。

响应包含第1列的5个字节数据，其他2列的0个字节。

基于该响应dbw形成MDS消息，其中每列都打包在包含24字节报头+ 2字节长度+负载+ OFFSET的字段中。

如果列不包含数据，如长度= 0，它仍将占用：24字节报头+ 2字节长度+ 2字节偏移量= 28字节。

解决方案

要解决此方案，您需要从表/配置中删除未使用的列，或缩小列名，或缩小列数据大小。

相关文档:

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