1、R9数据升级工具,R9研发部 鲁忠念,题纲,概述 关于升级的几个基本概念 R9数据升级方式的演变 主要功能 实现方案 操作演示 升级步骤 操作演示,一、关于数据升级的几个基本概念,首先了解这些内容,便于提升数据升级的实施的准确性和维护效率。以及出现问题时,能快速的有效的排除和修改1.数据升级所要完成的基本功能:既升级工具具体要完成哪些事情呢? 1)修改数据库物理结构:将数据库中的相关对象升级到最新版本:如表、存储过程、视图等2)修改业务数据逻辑结构:将低版本的数据格式升级为高版本的数据格式,只涉及数据表的升级,不涉及存储过程,视图。例如:科目表中gl_kmxx中辅助核算fzhs字段在R97以下
2、版本中,科目按部门项目核算的数据格式是“01“,升级到R97后就是“,0,1,“,2.升级模式:就是以什么方式,以什么技术手段来完成升级。以便于升级出现问题时,能迅速确定问题在哪个环节。要修改哪些部分,由谁来修改。1)程序升级方式:就是数据库物理结构和业务逻辑结构的升级都放到了前台程序中。另外,出现问题时,需要专门修改升级工具本身。2)手工执行脚本升级方式:就是数据库物理结构和业务逻辑结构的升级都放到了脚本中,执行脚本就完成了升级过程。另外,出现问题时,只需要修改脚本即可。,一、关于数据升级的几个基本概念,一、关于数据升级的几个基本概念,3)工具执行脚本升级方式,或工具执行升级包升级方式:就是
3、数据库物理结构和业务逻辑结构的升级都放到了脚本中,运行工具来执行脚本就完成了升级过程。另外,出现问题时,只需要修改脚本即可,不需要修改升级工具4)程序+升级包升级方式:就是由程序和脚本共同完成数据升级过程。一般是业务数据变化较大,且较复杂时采用这种方式,R97以上的升级都是这种升级方式。升级程序完成的任务:主要是执行脚本或自动生成脚本并执行,以及个别复杂数据的升级,如总账余额表,总账的自定义辅助核算升级为固定辅助核算,工资项目字段的升级。所以这些数据出现问题时,需要修改升级工具;脚本是存放在升级包里的,它完成的任务是:数据库物理结构升级和简单的业务数据的升级。所以这部分出现问题时,只要修改脚本
4、,然后打包到升级包即可。,一、关于数据升级的几个基本概念,5)程序+升级包+升级方案升级方式:与程序+升级包升级方式的区别就是升级包中增加了升级方案,这个升级方案实施人员可以自己配置。升级方案的作用是程序可以根据这个方案自动生成脚本来执行。6)自动化综合工具执行脚本升级方式:就是对数据库物理结构和业务逻辑结构的升级都放到了脚本中,运行工具来执行脚本就完成了升级过程。另外该综合工具不光升级数据库,还可以升级各产品的前台程序及升级产品的运行环境。所以出现问题时,只需要修改脚本即可,不需要修改升级工具。,一、关于数据升级的几个基本概念,3.升级包:所谓升级包就是将各产品的多个数据脚本及升级方案(就是
5、说的升级模版)打包到一个压缩文件,里面不含有升级程序。对于R9i的升级包,是将各个脚本的内容放到Access数据库中,升级时通过访问该Access数据库来获取脚本并执行。升级工具包,是含有升级工具及升级包,R9数据升级方式的演变,各个升级工具的功能,1.后台管理工具的升级功能1:DatTools.exe 升级方式:程序升级方式 后台版本:R96及以下版本的后台工具 主要功能:将Win311升级到Anyi2000、R91R96(941普及版除外)等R9版本 数据脚本:无脚本 支持产品:只有总账、工资、固定资产三个主要311的产品的升级 数据库:是在原数据库上的直接升级,升级后旧库变新库。2.后台
6、管理工具的升级功能2:DatTools.exe 升级方式:工具执行脚本方式 后台版本:R96及以下版本的后台工具,含R97后台 主要功能:是R9.X小版本之间升级或Anyi2000向R9.2,R9.3大版本的升级如每次支持R9.60升级到R9.65,R970升级到R971 数据脚本:R96以下产品有各个产品的独立脚本,对于R96,R97版本则是若干个大脚本及权限脚本,既将所有产品的脚本放到一个大脚本中。 支持产品:R9所有产品,因为他们只要写自己的脚本即可 数据库:是在原数据库上的直接升级,升级后旧库变为新库。,各个升级工具的功能,3.升级工具的升级功能1:Up_Scheme.exe 升级方式
7、:工具执行升级包方式 工具版本:R95、R96都发版了数据升级工具(每次只保留最后一版的工具,兼容升级R95) 主要功能:将311、Anyi200、R9.X升级到当前R95,或R96版本其中升级311到R9时,采用的是程序+升级包方式 数据脚本:升级包中打包了各产品的脚本 支持产品:R9所有产品,因为各产品只要写自己的脚本即可 数据库: 是在原数据库上的直接升级,升级后旧库变新库,但有选项可以选择将旧库备份一份。4.升级工具的升级功能2:Up_Scheme_R97.exe或名为Up_Scheme.exe 升级方式:程序+升级包方式 工具版本:R97和R971都发版了数据升级工具 主要功能:将3
8、11、Anyi200、R9.X升级到当前R97版本,由于R97与R96数据库逻辑结构有较大变化,所以升级较复杂些 数据脚本:升级包中打包了各产品的脚本 支持产品:R9所有产品,但没有发版oracle升级版本后来增加了升级oracle的专版,但未全面测试 数据库: 将原有数据库完全复制一份为新库,在新库上进行升级,升级后旧库还在,没有变化,但要使用新库。,各个升级工具的功能,4.升级工具的升级功能3:Up_Scheme_R9i.exe 升级方式:程序+升级包+升级方案方式 工具版本:R9i,R98版都发版了数据升级工具(每次只保留最后一版的工具,兼容上一版升级功能,如R98发版的升级工具可将R9
9、71升级到R9i,但要用R9i的升级包)主要功能:将311、Anyi200、R9.X,971的数据升级到R9i版本,由于R97与R96,R9i与R97的数据库逻辑结构有极大变化,所以升级复杂些2010年底的升级工具,增加了将R9972升级到R9i,R98的功能数据脚本:升级包中打包了各产品的脚本,并定制了升级方案 支持产品:大多数R9产品,但有些产品可能没有设置升级方案到升级包中,所以不支持升级,需要升级时再临时手工配置升级方案数据库: 是跨数据库的升级,先建立R9i的库,要求建立单位账套,早期的版本还要建立的起始日期与旧账套的一致。升级时程序将旧库的数据,按升级方案的关系转移到9i的库中。升
10、级后,旧数据库没有变化。,各个升级工具的功能,5.综合升级工具的升级功能1-DbUpdate.exe 升级方式:自动化综合工具执行脚本升级方式 工具版本:R9i,R98都发版了综合升级工具,每修改一个9i的维护单,就发布一个综合升级工具。主要功能:将R9i低版本数据库升级到R9i的高版本数据库。考虑到升级效率,分各个阶段的升级,如专门发布了一个升级包可将9i升级为最原始的R98;再发布一个升级包,将原始的R98库升级到最新的库.数据脚本:各个R9i的版本都有自己的ACCess数据库升级包,对于R9i每个数据库对象就要写一个脚本 支持产品:R9i所有产品 数据库:是在原数据库上的直接升级,升级后
11、旧库变为新库。,数据升级工具特点,简单易用.使用升级包,将低版本账套一次性升级到高版本。这样 中间省去了升级多次环节.改变了过去脚本升级方式下,每个产品一个或多个脚本,烦琐的升级步骤。这样降低了技术支持量、实施量和维护成本.可支持多个账套同时升级更安全、更可靠升级包里的脚本全面,几乎包含了数据库中每个对象的脚本,因此可最大限度的保证数据库升级的正确性缺点因为需要升级每个数据库对象,升级时速度比较慢。,R97,R9i,R98升级实现方案,R97:升级工具+升级包 R9i:升级工具+升级包+数据转换 即将低版本的账套,通过升级工具和相应版本的升级包,将其升级为高版本的数据库,R97升级步骤,1.获
12、取升级包升级什么版本的账套就用那个版本的升级包升级包在安装目录的client目录下的.aus文件,如:any-970(SQL).aus,可将当前账套升级到R97any-960(SQL).aus,可将当前账套升级到R96any-950(SQL).aus,可将当前账套升级到R952. 选择待升级的账套 .先选择目标账套,可以选择多个账套升级,升级工具将循环升级所选择的账套.对于311的升级,需要先建立一个R9空白账套,升级工具将311数据库文件转换到所建立的新账套中 3.备份账套选择备份选项,系统升级前,可自动备份账套。便于升级失败后,可以选择回滚,这样可以恢复到未升级之前的旧账套的状态。过程是:
13、将旧账套先备份一份,再将旧账套升级。回滚时,是删除升级后的旧账套,恢复备份的旧账套,R97升级步骤,4.开始升级账套.升级工具依次执行升级包里的所有脚本.执行升级包里的脚本的目的:将低版本账套的表结构等数据库对象升级为高版本的数据库的结构。5.数据转换(R97) 若是将311的数据升级到R9,或将R9的低版本账套升级到R97账套,则要经过数据转换这一步。数据转换的目的:将低版本的数据的逻辑结构转换为高版本的数据的逻辑结构另外数据转换时还会在新账套预置一些数据,R97升级要点,由于R97数据结构,特别是余额表结构的重大变化,以及用户数据的多样性,会导致一些升级错误。因此需要在一定条件下升级,特殊
14、情况需要作特殊处理。 升级到R97的条件升级前请务必确认以下工作已完成, 再考虑升级到R97,否则升级结果会不正确1)请保证各会计期间,试算平衡通过后再升级。2)对于严格辅助核算项,请保证科目余额和辅助余额相等后再升级。期初余额的升级是难点,有以下一些情况需要注意:1)三项(多项)交叉核算的升级即科目按三项以上交叉的核算,即科目按两个固定项,再按一个或多个自定义核算时,期初余额理论上无法完整的升级,需要升级后手工补充录入期初余额.2)当科目的严格辅助核算,在使用后,若修改了,会造成余额表混乱,这样在R97容易造成升级后期初余额不平或账薄显示数据不完整。升级程序会自动检查这样的科目,并修正,也可
15、以不修正,选择手工修正。3)一些需要注意的其他情况,情况比较多,不一一列举了,有些可能需要作特殊处理不支持自定义辅助核算升级为固定辅助核算由于自定义核算升级为固定项,涉及到凭证,期初余额的重大调整,另外当多个自定义交叉时,及非严格核算下等有些情况是无法升级的,为了数据升级后稳定暂不支持自定义项升级为固顶项。,预算科目(功能分类)核算项的升级在R97以下的低版本中,预算科目是自定义辅助核算项,而R97中的功能科目是固定辅助核算项。 升级到R97后,预算科目仍然作为自定义核算,无法升级为功能分类。建议在R97重新做一套功能科目的业务,看以前的预算科目账薄时,可登录到旧账套查看。311升级到R973
16、11中的凭证可以没有凭证类型,而R97是需要凭证类型的,这种情况下升级之后,需要执行专门脚本给所有的凭证号加上凭证类型,R97升级要点,R9i升级方案,功能目标 将R9低版本账套数据库结构和数据升级到R9I(包括311升级间接升级). R9旧账套 + 数据升级工具 + 升级包方式:直接升级到R9I 例如R9.X旧账套不需要先升级到R92、R93、R94、R95、R96、R97,而是直接通过升级工具加升级包升级到R9I的账套. 不支持8.X旧账套的直接升级 支持SQLServer 、Oracle账套的升级 批量升级:一次可以将多个R9.X账套升级到R9I数据库 不支持R9.X账套的管理员权限数据
17、到R9I的升级 不支持汇总账套的升级,升级流程图,将多个R9.X账套升级到一个R9I数据库,升级流程,Sqlserver数据库 创建好R9I数据库,建立各个单位账套信息。 如果是非R97账套的升级,则将源账套先备份,再恢复到一个新账套,作为中间数据库 对中间数据库执行大脚本,将库结构升级为R97 再将中间数据库的数据升级为R97的数据 将中间数据库数据导入到R9I数据库 删除中间数据库 记录升级日志: 记录哪些账套已经升级过,升级到R9i的对应关系,升级信息及相关出错信息,升级流程,Oracle数据库 创建好R9I数据库,建立各个单位账套信息。 如果是非R97账套的升级,则需要新建中间用户。
18、将中间用户的表的数据升级为R97账套 将中间用户的数据导入到R9I数据库 删除中间用户 记录升级日志: 记录升级信息,如升级到R9i的对应关系,升级信息及相关出错信息,升级包设计,升级包分为3个升级包 由于从R95开始就有了大脚本,所以 一个升级包是针对R95,R96版本账套升级到R9i时使用的。 一个升级包是针对R95以下版本账套升级到R9i时使用的。 一个升级包是针对R97版本账套升级到R9i时使用的。 实际上3个升级包可以合并到一个升级包,只是升级包里的文件列表不同。 R95,R96账套升级列表文件为:_SCRIPTLST_R9596.LST R97账套升级列表文件为:_SCRIPTLS
19、T_R97.LST R95以下版本升级列表文件为:_SCRIPTLST_R95Low.LST,升级脚本,R95,R96,R97账套升级时去掉_SCRIPTLST.LST文件中以下脚本 设置索引、触发器、外键的脚本,例如:DROPALLINDEX.SQL、ADDALLINDEX.SQL。 检查表结构、视图、存储过程的脚本:例如GL_KMXX.SQL等脚本,这些脚本用于检查当前所有数据库对象是否完整。 有几千个这样的脚本,实际对于R95及以上版本账套的升级时,都不需要执行这些脚本,执行一个账套就需要30分钟,经过一年多的用户升级的反馈看,升级慢就是因为这个原因。提高升级效率后,也便于测试。 去掉和
20、权限相关的脚本,iInitRights.sql, InitPower.sql 去掉和套打相关的脚本,升级包列表文件的内容,_SCRIPTLST.LST列表文件如下:(升级R95,R96版本账套到R97I) CheckData.sql 数据检查脚本,保证R95账套数据额正确性 uDBUpdateSql_bef.sql R95金盘大脚本 uDBUpdateSql.sql R95银盘大脚本 uDBUpdateSql_R96.sql R96金盘大脚本 uDBUpdateSql_R96B_PUB.sql R96银盘收支分类版公共模块大脚本 uDBUpdateSql_R96B_CW.sql R96银盘收支
21、分类版财务大脚本 uDBUpdateSql_R96B_CZ.sql R96银盘收支分类版财政大脚本 uDbUpdateSql_R97.sql R970大脚本 uDbUpdateSql_R97C.sql R971大脚本 UpdateToR97.sql 将R97以下版本账套数据转换为R97的数据的脚本 _SCRIPTLST.LSTLOW列表文件 包含所有的脚本 _SCRIPTLST.LSTR97列表文件 uDbUpdateSql_R97.sql R970大脚本 uDbUpdateSql_R97C.sql R971大脚本 对于OracleR95以前账套的升级需要整理以下文件到升级包O_AnyiPUB
22、_R93.sql,O_AnyiFA_R93.SQL,O_AnyiPA_R93.sql,O_AnyiGL_R93.sql,数据表的升级,将要升级的数据表放到升级模版库中imp.mdb 设置好每个R9i目的表和R97源的对应关系每个字段的对应关系 升级工具依次执行该模版库中的表将完成数据的升级,有自定义字段的表的数据升级,工资自定义项目的升级 升级工资前,请保证原账套和目标数据库的表gz_ysgzx表的数据的正确性和完整性,否则工资自定义项目的数据将无法正确的升级。 由于升级时,会修改工资相关表的表结构,如果升级后没有问题,请不要重复, 并且不要把不同的低版本账套的数据升级到R9i的同一个单位中去,以免造成 工资表的自定义工资项目的数据错误。,自定义字段的表的数据升级,固定资产(资产管理)卡片自定义项的升级 升级固定资产前,请保证原账套和目标数据库的表FA_KPJG数据的正确性和完整性,否则卡片的自定义项目数据将无法正确的升级。 由于升级时,会修改卡片相关表的表结构,如果升级后没有问题,请不要重复, 并且不要把不同的低版本账套的数据升级到R9i的同一个单位中去,以免造成 卡片相关表的自定义项目的数据错误。,谢谢大家! 答疑时间!,中国财政管理软件第一品牌,