基于SQLSever的数据库结构自动升级方法

文档序号:9616350阅读:250来源:国知局
基于SQLSever的数据库结构自动升级方法
【技术领域】
[0001]本发明涉及数据库升级技术领域,尤其涉及一种基于SQLSever的数据库结构自动升级方法。
【背景技术】
[0002]—套系统,在其整个生命周期内,伴随客户增量需求和实现逻辑的变更,常常需要进行升级。包括软件升级和数据库升级。数据库升级主要考虑增量升级,减量升级则没有意义。主要包括表增加、字段增加、字段类型和长度变更等。

【发明内容】

[0003]本发明要解决的技术问题在于提供一种基于SQLSever的数据库结构自动升级方法,以解决现有技术存在的问题。
[0004]为解决上述技术问题,本发明采用以下技术方案:
基于SQLSever的数据库结构自动升级方法,包括:
使用SQLSever数据库工具生成新版本的数据库脚本;
遍历旧版本库表和新版本数据库脚本,对新版本的数据库脚本与旧版本的数据库表进行对比处理,获取处理后的数据,根据处理后的数据对旧版本的数据库表进行修改。
[0005],所述对新版本的数据库脚本与旧版本的数据库表进行对比处理,获取处理后的数据,根据获取的处理后的数据对旧版本的数据库表进行修改,包括:
遍历新版本的数据库脚本的表名称和旧数据库表的表名称,对它们一一进行对比比较,判断是否是相同的名称,筛选出新版本的数据库脚本中与旧版本数据库表相比新增加的表名称,在旧版本的数据库表中为新增加的表名称建立新的库表结构。
[0006]对具有相同表名称的表对象,进一步依次判断新版本的数据库脚本与旧版本的数据库表中每个表相对的每个字段的字段类型是否一致,不一致则使用新版本的数据库脚本的字段类型代替旧版本的数据库表的字段类型,对旧版本的数据库表进行升级,一致则不替换。
[0007]对具有相同表名称的表对象,进一步判断新版本的数据库脚本对比旧版本的数据库表每个表相对应的每个字段长度是否具有增量,如果具有增量则使用新版本的数据库脚本的字段数据代替旧版本的数据库表的字段数据,对旧版本的数据库表进行升级,不具有增量则不替换。
[0008]本发明的有益效果:本发明可以自动进行数据库升级问题,解决用户不会操作sqlsever工具进行备份还原和升级的问题。
【附图说明】
[0009]图1为本发明的流程图。
【具体实施方式】
[0010]如图1所示本发明提供一种基于SQLSever的数据库结构自动升级方法升级时,它首先使用SQLSever数据库工具生成新版本的数据库脚本;然后遍历旧版本的数据库表,同时遍历新版本数据库脚本,对新版本的数据库脚本与旧版本的数据库表进行对比处理,获取处理后的数据,根据获取的处理后的数据对旧版本的数据库表进行修改,进行数据库表的升级。
[0011]具体来说,首先遍历新版本的数据库脚本和旧版本的数据库,获取新版本的数据库脚本和旧版本数据库的表数目和表名,对新版本的数据库脚本和旧版本的数据库的表名一一进行对比比较,判断是否是相同的表名,一一进行判断以后,筛选出新版本的数据库脚本中与旧版本数据库表相比新增加的表名,然后对新增加的表名在旧版本的数据库表中建立新的库表结构,其中相同表名称比较字段个数,对于不同字段名称的进行增量添加,对于旧版有而新版没有的字段则忽略。例如说,在旧版本的数据库中存在10个表名,而新的数据库脚本中存在13个表名,对他们--进行对比筛选,找出新版本的数据库脚本中不存在于旧版本中的3个表名,然后在旧版本的数据库中为这三个新增表新建表结构,即对旧版本的数据库表进行更新。
[0012]新增表增加完以后,对新版本的数据库脚本中与旧版本数据库中具有相同表名的表对象,对新版本的数据库脚本与旧版本数据库均、以一列为一个字段,依次判断新版本的数据库脚本与旧版本的数据库表中每个表相对应的每个字段的字段类型是否一致,不一致则使用新版本的数据库脚本的字段类型代替旧版本的数据库表的字段类型,对旧版本的数据库表进行升级,一致则不替换。
[0013]在对数据库中表的字段类型进行判断时,还需要判断新版本的数据库脚本中与旧版本数据库中相同名称的表对应的相同的字段的长度是否有变动,如果有变动则使用新版本的数据库脚本的字段数据代替旧版本的数据库表的字段数据,不具有变动则不改变。
[0014]在进行表名判断、字段类型判断、字段长度判断的过程中,同时根据新版数据库脚本对旧版数据库进行修改,完成自动升级。
[0015]为了数据的安全和后续的查看,本发明在省级数据库之前首先进行数据的备份,而在升级后,还可以进行数据的还原,数据库备份和还原是基于Sqlserver企业管理器的备份和还原API实现的。具体如下:
一,备份数据库
1).指定备份数据库,内部代码里执行sql命令BACKUP DATABASE DBName TO DISK =’C:\ DBName.bak' WITH FORMAT;默认完全备份,即完整数据库备份,可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。这是大多数人常用的方式,安全性好,但需要花费相对多的时间和空间。
[0016]二,还原数据库
1).需要提供数据库备份文件,DBName.bak文件;
2).依据bak备份文件,代码里执行sql命令RESTORE DATABASE DBName FROM DISK=,C:\ DBName.bak’ WITH REPLACE, MOVE DBName TO ’C:\DBName.mdf’,MOVE DBName_log’ TO ’ C:\ DBName.ldf’
例如:一返回由备份集内包含的数据库和日志文件列表组成的结果集返回由备份集内包含的数据库和日志文件列表组成的结果集
RESTORE FILELISTONLY FROM DISK = ’c:\ DBName.bak’
—还原由BACKUP备份的数据库
还原由 RESTORE DATABASE DBName FROM DISK =,c:\ DBName.bak’
-指定还原后的数据库物理文件名称及路径,这里得在SQL Server数据库管理系统中,
先指定还原后的数据库物理文件名称及路径,数据库管理系统中,指定还原后的数据库物理文件名称及路径
创建数据库名为Test的数据库,的数据库,并且指定mdf文件和ldf文件在C盘test文件夹下.文件夹下.否则,在还原的时候,找不到指定的路径.在还原的时候,找不到指定的路径.RESTORE DATABASE Test FROM DISK = ’c:\ DBName.bak’ WITH MOVE ’DBName’TO ’c:\test\testdb.mdf’,MOVE ’ DBName _log’ TO ’c:\test\testdb.ldf’ MOVE,logical_file_name,TO ' operating_system_file_name'指定应将给定的logical_file_name 移到 operating_system_file_name.默认情况下,logical_file_name将还原到其原始位置.如果使用RESTORE语句将数据库复制到相同或不同的服务器上,则可能需要使用MOVE选项重新定位数据库文件以避免与现有文件冲突.可以在不同的MOVE语句中指定数据库内的每个逻辑文件.一强制还原,加上REPLACE参数,则在现有数据库基础上强制还原.强制还原,参数,则在现有数据库基础上强制还原.强制还原
RESTORE DATABASE Test FROM DISK = ’c:\ DBName.bak’ WITH REPLACE, MOVE ’DBName ’ TO ’c:\test\testdb.mdf’,MOVE ’ DBName _log’ TO ’c:\test\testdb.ldf’。
【主权项】
1.基于SQLSever的数据库结构自动升级方法,其特征在于,包括: 使用SQLSever数据库工具生成新版本的数据库脚本; 遍历旧版本库表和新版本数据库脚本,对新版本的数据库脚本与旧版本的数据库表进行对比处理,获取处理后的数据,根据处理后的数据对旧版本的数据库表进行修改。2.根据权利要求1所述的基于SQLSever的数据库结构自动升级方法,其特征在于,所述对新版本的数据库脚本与旧版本的数据库表进行对比处理,获取处理后的数据,根据获取的处理后的数据对旧版本的数据库表进行修改,包括: 遍历新版本的数据库脚本的表名称和旧数据库表的表名称,对它们一一进行对比比较,判断是否是相同的名称,筛选出新版本的数据库脚本中与旧版本数据库表相比新增加的表名称,在旧版本的数据库表中为新增加的表名称建立新的库表结构。3.根据权利要求2所述的基于SQLSever的数据库结构自动升级方法,其特征在于:对具有相同表名称的表对象,进一步依次判断新版本的数据库脚本与旧版本的数据库表中每个表相对的每个字段的字段类型是否一致,不一致则使用新版本的数据库脚本的字段类型代替旧版本的数据库表的字段类型,对旧版本的数据库表进行升级,一致则不替换。4.根据权利要求2所述的基于SQLSever的数据库结构自动升级方法,其特征在于:对具有相同表名称的表对象,进一步判断新版本的数据库脚本对比旧版本的数据库表每个表相对应的每个字段长度是否具有增量,如果具有增量则使用新版本的数据库脚本的字段数据代替旧版本的数据库表的字段数据,对旧版本的数据库表进行升级,不具有增量则不替换。
【专利摘要】基于SQLSever的数据库结构自动升级方法,包括:使用SQLSever数据库工具生成新版本的数据库脚本;遍历旧版本库表和新版本数据库脚本,对新版本的数据库脚本与旧版本的数据库表进行对比处理,获取处理后的数据,根据处理后的数据对旧版本的数据库表进行修改。本发明可以自动进行数据库升级问题,解决用户不会操作sqlsever工具进行备份还原和升级的问题。
【IPC分类】G06F17/30, G06F11/14
【公开号】CN105373631
【申请号】CN201510950276
【发明人】张斌, 尚会领, 宋社平, 雷亚歌
【申请人】河南思维自动化设备股份有限公司
【公开日】2016年3月2日
【申请日】2015年12月18日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1