SAP Business One从2007升级到8.82,现在又要升级到9.3,以适应服务器系统升级和MSSQL升级要求;
按照说明,必须先升级到9.1,再升级到9.3
升级9.1步骤,
1、附加数据库,
2、运行升级包中upgrade.exe
3、选择语言弹窗,默认简体中文,直接点击下一步;
4、选择升级前的测试和升级,点击下一步
5、勾选使用上次向导运行的设置,点击下一步;(服务器名称:localhost;端口:30000;用户:B1SiteUser;密码:自己第一次安装时设定)
6、已从先前的配置文件读取,直接点击下一步;
7、输入用户B1SiteUser的密码,下一步;
8、许可证服务器名称localhost,数据库服务器类型MSSQL_20XX;服务器名称:默认本机计算机名称;可以直接点击下一步;
9、选择服务器组件,Databases,右侧显示找到最早版本。且默认勾选;其它勾选可以去除;下一步
10、就绪,选择升级的数据库,下一步;
开始测试,测试完数据库旁边会出现报告,若有错误,查看日志,根据日志到企业管理器里修改;没有错误,打开详情信息,勾选警告项,返回后,点击“升级”,开始升级;
**********
OCFW出现重复问题;OMRC重复问题,POR1、RDR1出现2491问题,其中后三个都是字段记录长度不合要求。截取时会产生重复。升级前后查看设计表结构说明确实如此,升级前后个别字段设计长度不一样。
一些常用查看命令, 新建查询后
1、列出表OMRC中所有厂商名字(FirmName)长度大于30字符的,然后保存为文件,以备修改前后参考以及升级后还原 SELECT *  FROM omrc WHERE  LEN(FirmName)>30
2、显示por1表中u_cgtk字段记录长度超过10的记录,以num,DOCENTRY,LineNum,u_cgtj列表,然后保存为文件 SELECT ROW_NUMBER() OVER(PARTITION BY DOCENTRY ORDER BY  LineNum) as num,DOCENTRY,LineNum,u_cgtk FROM por1  WHERE  LEN(u_cgtk)>10 
显示por1表中u_zzyh字段记录长度超过50的记录,以num,DOCENTRY,LineNum,u_zzyh列表,然后保存为文件 SELECT ROW_NUMBER() OVER(PARTITION BY DOCENTRY ORDER BY  LineNum) as num,DOCENTRY,LineNum,u_zzyh FROM por1  WHERE  LEN(u_zzyh)>50 
RDR1同样操作;
3、 列出u_cgtk字段所有记录长度大于10的,并排序,标号,然后保存为文件 SELECT ROW_NUMBER() OVER(PARTITION BY DOCENTRY ORDER BY  LineNum) as num,DOCENTRY,LineNum,u_cgtk FROM rdr1  WHERE  LEN(u_cgtk)>10
4、后面与前面厂商名称有重复的,在前面加字符1 update  omrc  set  FirmName=’1’+FirmName where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) > 1) and FirmCode not in (select min(FirmCode) from  omrc  group by FirmName  having count(FirmName )>1)
如果要尽量保持与远来内容基本一致,修改注意项目如下:
a、内容为空(长度为0)的不合格,要修改
b、长度超过30字符的不合格,SQL数据库中中文规则下,半角全角字符一视同仁;
c、名称重复不合格;重复超过2次以上的怎么办,以查询最多的10次为例,依次分别追加序数改名,如下
update  omrc  set  FirmName=FirmName+''10'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =10) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=10) update  omrc  set  FirmName=FirmName+''9'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =9) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=9) update  omrc  set  FirmName=FirmName+''8'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =8) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=8) update  omrc  set  FirmName=FirmName+''7'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =7) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=7) update  omrc  set  FirmName=FirmName+''6'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =6) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=6) update  omrc  set  FirmName=FirmName+''5'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =5) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=5) update  omrc  set  FirmName=FirmName+''4'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =4) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=4) update  omrc  set  FirmName=FirmName+''3'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =3) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=3) update  omrc  set  FirmName=FirmName+''2'' where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) =2) and FirmCode  in (select max(FirmCode) from  omrc  group by FirmName  having count(FirmName )=2)
第10个名称后追加10,第9个名称后追加9,依次追加,直到没有重复
5、
por1表中所有u_cgtk字段长度大于10的记录,可以分别截取,或者分别修改,或者一致改为‘某字符串’;
rdr1表中所有u_cgtk字段长度大于10的记录,可以分别截取,或者分别修改,或者一致改为‘某字符串’;
如
update  por1  set  u_cgtk=''尚欠9万1'' WHERE  LEN(u_cgtk)>10 update  rdr1  set  u_cgtk=''日发大财'' WHERE  LEN(u_cgtk)>10
rdr1表中所有u_cgtk内容为“2020年12月25日”记录,统统改为''2020.12.25''(或者''2020年12月25'') update  rdr1  set  u_cgtk=''2020.12.25''  WHERE  u_cgtk=''2020年12月25日''
二、9.1升级9.3;
附加升级后的9.1数据库,运行setup,这个比较简单 |