| 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、后面与前面厂商名称有重复的,在前面加字符1update  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,这个比较简单 |