环境:金蝶旗舰版4.0+Windows Server2008R2+SQL Server 2005
客户供应链期末结账的时候,结账界面卡在结转本期成本,过后无响应,与此同时系统内存占用率直线飙升,直至系统提示内存溢出。此时调出系统任务管理器显示内存占用率已经达到97%
初步用K3MainDBG跟踪组件无报错
后用SQL跟踪器跟踪发现金蝶最后执行的语句为:
delete from icbal where 过滤条件
SQL Server查询分析器执行该语句耗时缓慢,最后查询分析器同样报错‘超出内存’
后台执行查询语句
select * from icbal where 过滤条件
耗时长,查询结果百万行
查阅往期icbal,发现数据都只有几万行,由此推定是icbal导致的结账异常
继续查找查找发现icbal中重复出现了同一个物料+同一个批号,记录下来,在金蝶里面查找该物料的库存,但是库存为0,库存为0按道理是不会显示的,继续跟踪
我查找了一下金蝶官方的结账后台流程
可以得知icbal的数据始发点是icinvbal,而icinvbal的取数又是来源于库存单据
通过查找icstockbillentry表,过滤语句为
select a.fdate,a.fbillno,b.fitemid,b.fbatchno
from icstockbillentry b
inner join icstockbill a on a.finterid=b.finterid
where