使用DB-Library如何分块获得TEXT类型的数据???
RETCODE DBRET;
dbcmd( pReaderThread->DBReadProc,
"master..xp_sqltrace @function='trace',
@eventfilter=15,
@bufsize=20000,
@timeout=10,
@FullText=1,
@IntegerEvents=1");
DBRET=dbsqlexec(pReaderThread->DBReadProc);
unsigned char TEST[5120];
dbresults(pReaderThread->DBReadProc);
dbbind(pReaderThread->DBReadProc,8,STRINGBIND,(DBINT) 5120,(unsigned char *)TEST);
DBRET=dbnextrow(pReaderThread->DBReadProc);
while (DBRET!=NO_MORE_ROWS)
{
LogFile.Write(TEST,5120);
DBRET=dbnextrow(pReaderThread->DBReadProc);
}
解释:
这段代码使用DB-Library执行存储过程master..xp_sqltrace。
master..xp_sqltrace返回的结果集的第8列是TEXT类型的访问SQLServer的命令内容。
可是当我执行了一个字符数量超过4096的命令(例如建一个存储过程,存储过程的内容中字符数有8000多)后,
变量TEST只有命令的前4096个字符。
调整了dbbind函数的第3个参数,可是换成其它的变量故障依旧
使用dbdata代替dbbind函数获得返回数据,故障依旧
使用DBSETLPACKET函数设置了终端与数据库的TDS包的大小,设置成8192故障依旧
以为是缓冲区的问题,可是调用几次dbdata函数都只返回命令的前4096个字符
字符串数组是不是只能容纳4096个字符???????????????????????
哪位高手能不能给帮帮忙????