升级前无法日终处理,升级中无法激活PJC
问题描述:
1. 从5.4升级到6.0,激活PJC模块时出错
错误描述:Damaged data. Contract Categories. Data dictionary is inconsistent. (见图1)
图1
2. 升级前IC模块无法做日终处理(见图2)
图2
解决方案:
原因是客户使用的PO和PM(即PCJ模块)不是发行版,而是测试版(或类似的其它版本)。
从这里下载安装程序 https://groupdrive.na.sage.com/QuickLink/37bc58644a4f4da1b9
然后尽快在服务器上实施下列步骤:
1) 将accpac文件夹中的po54a,pm54a,po53b三个文件夹改名(这一步很重要)。
2) 安装program文件夹中的pm54a,po54a和所有最新sp(补丁)。(安装完成后比较新的pm54a,po54a与旧文件夹,会发现所有文件的日期都不一样。)之后这两个程序是完全干净的。稍后则可以将旧文件夹中的自定义报表及中文界面复制到新的文件夹中。
3) 数据库管理器中打开csapp这个表,把pm的datalevel的值从5404改为5400。这一步修复数据字典。(见图3)
图3
4) 运行下面的查询,清除所有缺少poporm明细的popori记录:
DELETE FROM POPORI WHERE NOT EXISTS (SELECT * FROM POPORM WHERE POPORM.PORISEQ=POPORI.PORISEQ)
(13 row(s) affected)
5) 运行下面的查询,清除POPORH/POPORI (键PORHSEQ=1612820和键PORHSEQ=1648355,没有相应的POPORJ):
DELETE FROM POPORH1 WHERE PORHSEQ=1612820
DELETE FROM POPORH2 WHERE PORHSEQ=1612820
DELETE FROM POPORL WHERE PORHSEQ=1612820
DELETE FROM POPORI WHERE PORHSEQ=1612820
DELETE FROM POPORM WHERE PORHSEQ=1612820
(1 row(s) affected)
(1 row(s) affected)
(44 row(s) affected)
(0 row(s) affected)
(0 row(s) affected)
DELETE FROM POPORH1 WHERE PORHSEQ=1648355
DELETE FROM POPORH2 WHERE PORHSEQ=1648355
DELETE FROM POPORL WHERE PORHSEQ=1648355
DELETE FROM POPORI WHERE PORHSEQ=1648355
DELETE FROM POPORM WHERE PORHSEQ=1648355
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(0 row(s) affected)
(0 row(s) affected)
6) 打开accpac程序,去到pjc,这时应该仅看到upgrade data。双击进行升级。可能需要25分钟左右,甚至更长。(见图4)
图4
7) 完成后如果见到类似这样的错误信息,不用管它。(见图5)
图5
8) 重启accpac后任意打开若干pjc界面,只有可以正常使用时才往下走。
9) 运行日终处理,顺利通过。(见图6)
图6
10)如果出错,用其他临时方案解决。
整个过程大约一小时。所有操作可以先在虚拟机上试行。或做好数据和程序备份之后直接在服务器上操作。
万一做完上述步骤后一切顺利,但第二天业务完成后日终又出错,没关系。只要你们仍能像以前一样用你们的临时方法解决,我们就上了一个台阶。在这个新的基础上我们再安排远程连接解决新的问题。
附注:这个案例很奇特,工程师花了很长时间才发现原来客户用的po和pjc不是正式版,而是发行之前的某个版本(试用或预览之类)。在这个版本与发行版之间工程师对一些dll作了修改。用户从5.1升级到5.4试用版之后日终处理报pjc数据字典错误,而当时赛捷的顾问在网上找了一个临时方案(据说是打上po53b的服务包,但工程师觉得其实没用,很可能是修改了数据库),算是暂时解决了数据字典报错问题,但从此以后无法再升级。这是第一错。接着因为试用版的po和pjc的dll文件不是最新的,因此不断在日终过程中产生新的mismatch错误,只好每次又用一些数据库语句临时插入丢失的记录。后来无论我们怎样修复,总会产生新的错误,直至我比对了他们的程序文件夹之后才发现问题的关键。万万没想到,也非常好奇,为什么客户使用的版本竟然不是正式版?一个惨痛的教训:永远在第一时间检查客户的软件版本!不光看许可证信息,还要看程序文件夹。
(解决方案由赛捷加拿大工程师Roger Chen提供,在此表示衷心感谢!) |