`
modabobo
  • 浏览: 509406 次
文章分类
社区版块
存档分类
最新评论

如何将数据库由高版本降为低版本

 
阅读更多

微软SQL Server是很多企业的理想选择,新的版本通常更快更强大,我们也会迫不及待把老版本数据库升级为新版本,这无可厚非,通常也非常顺利,在老版本中备份数据库,然后在新版本数据库中恢复一下就可以了,微软自己的东西,兼容性通常不是问题,但有时我们需要回到低版本,比如客户只有低版本的数据库等情况,如果我们要把高版本的数据库备份,然后用低版本数据库来还原,通常是不现实的,升级容易降级难.
这时,我们自然想到了,用脚本来实现,脚本可以完成表/视图/存储过程/函数等创建工作,却无法把数据也导入进来,如果数据库中有几百张表,手工导入数据将会是一场梦魇,为此,我通过一段代码来实现了自动导入功能,具体步骤如下:
1.在低版本数据库中,建立一个到高版本数据库的链接,如果你没有使用过链接服务器,那就百度一下吧,很简单的
2.用sql server的Management studio连接到高版本数据库上,配置一下选项,"SQL Server对象资源管理器"→"编写脚本"中,去掉"包含说明性标头"/"编写USE<数据库>脚本"/"编写if not exists 子句",勾选"编写索引脚本",注意"为服务器版本编写脚本"选择低版本数据库对应的版本,其他选项可以根据实际情况进行设置.
3.在低版本数据库中创建一个数据库,名称和高版本中的一样
4.回到高版本数据库,选择全部的用户表(按F7打开对象资源管理器详细信息),点鼠标右键,选择创建脚本,这时,我们欣喜的发现,创建的脚本分为前后两部分,前面部分是创建了表结构,后面部分对每张表添加约束/关联等信息,我们先把前面部分复制下来,粘贴到低版本数据库里面执行,这样,就创建了表结构.
5.在低版本数据库中执行下面的脚本,将数据从高版本导入:
--设置链接数据库名
DECLARE @LinkDB NVARCHAR(100)
SELECT @LinkDB='[192.168.1.102,3000].[Station_Center]'
--创建一个表变量,存放所有用户表名称
DECLARE @tb TABLE(TableName NVARCHAR(50))
INSERT @tb
select [name] int from sysobjects where xtype='U' order by [name]


--定义需要执行的SQL语句、当前操作的表名、表中是否有标识字段
DECLARE @Sql NVARCHAR(3000),@tbName NVARCHAR(50),@IsISIDENTITY BIT


--通过游标,逐一对各表进行数据导入
declare scu_Ticks CURSOR LOCAL FORWARD_ONLY READ_ONLY STATIC
for select TableName from @tb
open scu_Ticks


fetch from scu_Ticks into @tbName
while (@@fetch_status=0)
BEGIN
--检查是有标识字段,如果有,先关闭
IF EXISTS(SELECT *
FROM SYSCOLUMNS A INNER JOIN SYSOBJECTS D ON A.ID=D.ID AND D.XTYPE='U' AND D.NAME<>'DTPROPERTIES'
WHERE D.NAME=@tbName AND COLUMNPROPERTY( A.ID,A.NAME,'ISIDENTITY')=1
)
BEGIN
SET @IsISIDENTITY=1
END
ELSE
BEGIN
SET @IsISIDENTITY=0
END

SELECT @Sql='
Truncate TABLE '+@tbName
IF @IsISIDENTITY =1 --有标识字段,先临时关闭
BEGIN
SET @Sql=@Sql+'
SET IDENTITY_INSERT '+@tbName+' ON
'
END
--从链接数据库导入数据
SET @Sql=@Sql+'
insert into '+@tbName+'
select * from '+ @LinkDB+'.dbo.'+@tbName
IF @IsISIDENTITY =1 --恢复标识
BEGIN
SET @Sql=@Sql+'
SET IDENTITY_INSERT '+@tbName+' OFF
'
END
EXEC(@Sql)--执行组合的SQL语句
fetch next from scu_Ticks into @tbName
end
close scu_Ticks
deallocate scu_Ticks


6.现在,表中有数据了,再把第4步中生产的脚本的后半部分复制过来执行一下,这样,表之间的关联/约束就有了
7.最后,将视图/函数/存储过程等其他内容通过脚本创建起来.
其实,我们真正需要解决的是如何将数据自动导入,其他的,都是通过自动生成的脚本来实现的


分享到:
评论

相关推荐

    使用低版本abaqus打开高版本的方法

    abaqus版本众多,有些下载inp文件因版本过低导致无法打开,这里介绍一种使用低版本打开高版本的方法

    开源数据库对象同步工具

    分别为开源免费数据库同步工具OpenDBDiff 和 开源免费数据库同步工具SQL-DBDiff_V0.4 ,不记得之前是否有上传OpenDBDiff,但SQL-DBDiff跟其有...关于如何将数据库从高版本降至低版本,参考文http://blog.csdn.net/claro

    SQLServer 2008数据库降级到2005低版本

    SQLServer 2008R2备份的数据库还原到2008上面时报错引发的思考,如何把SQLServer数据库从高版本降级到低版本?本文为大家解答

    SqlServer高版本数据备份还原到低版本

    主要为大家详细介绍了SqlServer高版本数据备份还原到低版本的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    金蝶升级高版本降级.sql

    金蝶账套升级后低版本,不能再使用需要降级处理。 做好账套备份 下载该文件点击编辑,在数据库中立即执行

    北亚Sybase数据库修复软件 v1.2.zip

    北亚Sybase数据库修复软件主要对损坏的Sybase 数据库进行数据急救,使用户的损失降到最低.   最新版本1.2支持以下Sybase版本: 支持Sybase 15.5.X ○支持Sybase 11.9.X ○支持Windows及Linue系统上的Sybase。...

    SQL Server 2012降级至2008R2的方法

    前段时间某医院由于群集服务器的兼容性问题需要将数据库由2012降至2008R2,所以决定把数据库暂时切换至镜像服务器,同时开启应用层面的DML缓存以便实现不停机降级。 由于2012备份无法直接还原至2008R2(MSSQL数据库...

    Linux下实现MySQL数据备份和恢复的命令使用全攻略

    为了保障数据的安全,需要定期对数据...数据库版本:mysql-5.5.33 二:基于Mysqldump命令实现备份恢复 2.1、思路概念 Mysqldump是一个逻辑备份命令;意思就是将数据库中的数据备份成一个文本文件;也可以说是将表的结

    如何移动Oracle数据库的表空间

    提供了可以对表空间进行移动的方法,通过搬移表空间可大大降 低数据迁移的速度,提高工作效率。Oracle8i版本为实例讲解!

    毕业设计-springboot校友社交系统

    springboot校友社交系统 校园交友网站是校园交友管理的系统,它主要包括对...数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器:谷歌浏览器

    phprap v1.0.7.zip

    【优化】PHP最低版本依赖由5.5降为5.4 【优化】程序内相关二级域名链接替换成独立域名 【优化】数据库备份表doc_dbdab更改为doc_db_bak 【优化】框架初始化文件新增是否安装openssl扩展的判断 【优化】安装步骤...

    毕业设计-springboot校园交友网站

    springboot校园交友网站 ... 校园交友网站是校园交友管理的系统,它主要包括对...数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器:谷歌浏览器

    导库超实用工具.rar

    Oracle数据库导入时,高版本导出的dmp文件不能直接导入到低版本数据库中,本工具可以轻松的解决这个问题,亲测支持9i、10g、11g等目前主流版本Oracle导出Dmp文件的版本变更。

    java毕设之林业产品推荐系统源码(springboot+vue+mysql+说明文档+LW).zip

    林业产品推荐系统在让林业产品销售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升林业产品推荐系统提供的数据的可靠性,让系统数据的错误率降至最低。...

    XML,XSLT,AJAX三大技术打造开源多用户博客X3BLOG

    创建IIS站点,路径指向发布目录,并将ASP.NET版本设置为2.0。 3.进入站点属性设置,设置默认文档为main.xml、head.jpg、head.gif和head.png。 4.设置ISAPI筛选器,创建名为URLRewrite的筛选器,执行文件指向压缩包...

    鸿图人力资源管理系统免费版

    鸿图大型人力资源管理系统 鸿图人力资源管理系统从企业发展的...各种版本向上兼容,企业规模不大时可以使用较低的版本,企业发展了可以升级到较高的版本,各种版本间的数据向上自动升级,完全没有重复输入的麻烦。

    站易企网站管理系统(CTEIMS) v1.1 免费版.rar

    ASP 程序平台,ASP是目前国内应用最广泛的WEB开发语言,空间基于微软windows IIS,使您的购买空间和维护成本降到最低,并以其众多独创或领先的新特性和功能设计,使得用户深刻体验到易达以原创研发、服务客户为主导...

    多奥淘客程序2011最新版本可以整合文章系统

    并使用了强大的文件缓存机制,让淘宝客程序的网络瓶颈降到最低,使程序的执行效果更高、速度极快,同时也有效的降低了API调用的次数,降低了因为API超频而调用不到数据的情况。 2. 搜索引擎优化处理 解决了淘宝客...

    野蔷薇社区论坛YeQiangWeiClub v1.0 M3 源码版

    大量的使用高性能缓存使得软件在高并发下对数据库的压力降到最低!支持分布式Cache! 软件经过优秀的用户体验专家和交互设计师指点注重每一个细节的设计! DIV+CSS架构页面,使得更换样式变得异常简单,让网友浏览大...

    X3BLOG v0.7.5.0

    创建IIS站点,路径指向发布目录,并将ASP.NET版本设置为2.0。 3.进入站点属性设置,设置默认文档为main.xml、head.jpg、head.gif和head.png。 4.设置ISAPI筛选器,创建名为URLRewrite的筛选器,执行文件指向...

Global site tag (gtag.js) - Google Analytics