再问"由于超出容量限制,不能创建新事务"

supermay 2007-09-11 07:13:49
1。不要以前的旧贴,都不能解决问题,
2.刚开始使用是没有事的
3。使用用SDAC控件
4.用法
从Select Top 10 * From tableA(约有9K条记录)
选择数据
更新TableB,TableC(TableB,TableC为主从表,TableC的PK为自增型ID)
更新方法:
开始事务 [red]//在此出错[/red]
try
主表TableB
Select Top 1 * From TableB
append;
....
post;
从表TableC,从内存表中更新
Select Top 1 * From TableC
while Not vt.eof do
begin
append;
...
post;
vt.next;
end;
提交事务
except
回滚事务
end;
经跟踪,关闭TableA后能正常,
如何解决此问题
5.使用的SDAC中的MSQuery,没有缓冲更新,SQL探查器中看到更新TableC时,会返回自增型字段的值.其它的SQL与直接取用Insert Into纯SQL更新一样,
随数据越来越多,SQL的日志也越来越大,出现这个问题也越来越多
请帮解决
...全文
187 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
supermay 2011-12-19
  • 打赏
  • 举报
回复
环境:HP unix C开发做前端,银行方;DELPHI2007,我方,两者使用TCP/IP协议进行通讯,用二次握手方式,使用三个协议通讯(一个请求包,一个请求应答包,一个确认包),由客户端主动发起,采用短连接,请求包与请求应答包是同一次连接中完成;
1.我方用IOCP做了服务端,使用D2007开发测试客户端(使用IOCP,INDY9)都能与服务端正常通讯,但与银行方不能正常通讯,只看到对方登入后就断开.
2.我方用INDY9做了服务端,使用D2007开测试客户端(IOCP,INDY9)都能正常通讯,与银行方基本能正常通讯,但常会丢掉确认包,到最后银行方发现它自己的主控程序有问题,修改了情况好转了.但间中还会收不到确认包,银行说我拒绝他;
3.我方使用delphiXE+indy10升级了上面的服务端,银行完全不能接入,出现上面1的情况.
4.我方使用DELPHI XE + TCPServer的线程阻塞模式重写了服务端,银行不能接入,出现上面1的情况.
5.现在用回原来的2的程序,银行方出现有时能发,有时不能发数据过来,直到银行方取消一句tcpnotime什么的,可以发前两个协议过来,但还是不能发确认包过来,如何处理?
我分析:UNIX下是阻塞的,所以我用IOCP完全不能通讯,但为什么TCPSERVER用线程阻塞也不能通讯.
INDY9可以,INDY10就不可以出现IOCP的现象,不是不INDY10改为像它所说的不同的context在不同的时间有不同的线程进行服务,这与IOCP类似,所以不行,INDY9是一个连接一个线程,与TCPSERVER的线程阻塞有什么区别,
本人网络知识为空,只会用控件,IOCP也是搞网上的代码改的.
现在这里向大家求救,希望大家能给一些指点我.
谢谢.

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧