实战数据库版本的降迁(Discuz!NT 3.6.519 RC 后台数据库SQL2008降为SQL2005版本)

实战数据库版本的降迁(Discuz!NT 3.6.519 RC 后台数据库SQL2008降为SQL2005版本)

 

转载原文,并注明出处!虽无多少技术含量,毕竟是作者心血原创,希望理解。

 

下面我们将康盛论坛Discuz!的MSSQL版本为例,首先该后台数据库的版本为MSSQL2008 R2,我们需要将其部署到MSSQL2005的生产服务器上。

 

操作的步骤和方式还是如之前所说:

1、从MSSQL2008R2中生成MSSQL2005的数据库脚本。

2、从MSSQL2008R2中将数据导入低版本的数据库中。

3、检查低版本的数据库在应用过程中是否正常。

 

操作的注意事项,在下面细细说明:

 

1、从MSSQL2008R2中生成MSSQL2005的数据库脚本。

步骤:1)打开SSMS,或者在运行对话框中输入SSMS,打开MSSQL2008R2的管理界面。

2)按F8,或者依次打开[查看]-[对象资源管理器]。

3)在对象资源管理器中,连接数据库引擎,并选中相应的数据库。

4)右键选中的数据库,依次选中[任务]-[生成脚本]。

如图1所示

5)打开[生成和发布脚本]对话框,依次下一步,在[选择对象]对话框中,这里选择[选择特定数据库对象]。在{注1}将说明这里为何不选择[编写整个数据库及所有数据库对象的脚本]。

6)下一步,选择对象时,我们只选择[表],接着下一步,如图2所示。在{注2}将说明这里为何不选择[表]、[存储过程]和[用户自定义函数]一次导出。

图2

7)在[设置脚本编写选项]对话框中,我们点击[高级],如下图3所示

图3

8)在[高级]对话框中,将[为服务器版本编写脚本]选项选择为SQL 2005,如下图4所示。如果降级的版本是SQL2K,这里做相应的改变即可。

图4

9)下一步,直至脚本导出完成。重复第4至8步,依次导出[存储过程]和[用户自定义函数]脚本。此时我们手上有3个脚本文件,分别为dnt2_dbCreateTABLE2005.sql是导出SQL2005版本的建表脚本,dnt2_dbCreatePROCEDURE2005.sql是存储过程脚本,以及dnt2_dbCreateUDF2005.sql是用户自定义函数脚本。这里的文件名自己随意给。

到这里,降迁版本的数据库对象脚本已经全部导出。在这个案例中需要注意的分别是第6步和第8步。

 

2、从MSSQL2008R2中将数据导入低版本的数据库中。

A方案:在生成服务器SQL2005中,建立数据库,再执行上述3个脚本。然后怎样?当然是将数据导入了。操作数据导入导出功能,手动设定导入的对象参数。这个是大多数人的操作方式,如果是这样,在生成脚本的时候可以在第5步选择[编写整个数据库及所有数据库对象的脚本],然后稍作修改{注:这里的修改是指Create database的路径等内容}再执行,另外采用这个方法,则需要对原有数据库的表对象非常熟悉,比如哪些列是自增列,哪些是只读列等等,在手动导入过程中可以忽略这些列,如下图5所示。

图5

那我们这个案例中,我对库结构不了解,所以采用B方案

B方案:在生成服务器SQL2005中,建立数据库,再操作数据导入导出功能。我们如果不了解什么是实例,更不了解在同一个服务器上如何查询不同实例,请移步这里【查询不同实例名】

1)选择源实例的源数据库比如这里的SQL2008R2上的dnt2_db,右键依次打开[任务]-[导出数据];或者选择目标实例的目标数据库比如SQL2005上的新建数据库。

2)依次下一步,我们分别连接了复制源和目标库后,在[指定表复制或查询]对话框中,我们这里选择[复制一个或多个表或试图的数据]。

3)勾选[源],选择所有表。注意哦,到这里为止,我们只是在SQL2005新建了数据库,并没有执行那3个脚本。如下图6所示。

图6

4)选择所有表后,自动生成相应的目标表名,根据需要设置[编辑映射],我们这里会自动创建表所以不需要做设置。为何这里要自动创建目标表,在{注1}和{注2}中说明。

5)下一步直至完成,至此将源库中的表数据全部导入目标库中。接着我们打开dnt2_dbCreateTABLE2005.sql脚本并做相应的修改。

6)在建表脚本中,修改Create table为Alter table 并微调语法。修改后的脚本请移步这里下载

7)分别执行修改后的dnt2_dbCreateTABLE2005.sql,另外两个脚本直接执行。

8)至此,表数据和库结构都以导入完毕,索引等都已建立。再启用IIS并链接后台数据库,打开网页检查应用。

 

 

{注1}:Discuz!NT 3.6.519 RC 是基于MSSQL后台数据库上最新的测试版,其表结构和逻辑关系都不太了解。在很短的时间内要做数据库版本的降迁,如同上文的方案都是很多方式中的一种,不一定最好,但在当下是比较合适的。

dnt2_db的表中有很多只读的自增列,导致先建表再导入数据的方式会占用太多时间,所以这里我们先导入没有任何表约束、主键 的数据,只有数据而已,然后再通过修改建表脚本去添加约束和主键、索引等。

{注2}:这里选择分别导出[表]、[存储过程]和[用户自定义函数]脚本是为了将不同的数据库对象的建表语句规整到一个T-SQL中,便于修改。

 

转载原文,并注明出处!虽无多少技术含量,毕竟是作者心血原创,希望理解。

 

 

——>总结:没有最好的,只有最合适的。

 

Posted by: select left('claro',2) @13:56:33

lable: SQL

 

 

 

Discuz!NT 3.0.0 SQL Server正式版源码 该版本几乎与官方源码相同,需要编译安装才能使用,如果在安装过程中有任何问题请直接下载免安装版: Discuz!NT 3.0 版本针对SQL Server 2005/2008的新特性做了存储过程的全面优化,解决了以前版本存储过程因SQL Server2000语法限制造成若干存储过程无法被编译的问题,全面提升数据库运行效率。从Discuz!NT官方得知,目前新版本在官方网站的测试结果良好,showtopic等页面速度提升明显,同时服务器压力也有所降低。 在系统稳定性方面,Discuz!NT 3.0的系统重构消灭了所有重复代码,同时将数据和逻辑层进行了彻底分离,避免增加功能时重复数据方法的可能。官方开发人员表示:虽然本次重构的效果短时间内不明显,但是这次重构将为以后版本增加功能打下坚实的基础! 在整体的UI和用户体验设计方面,Discuz!NT3.0在保留传统风格的同时吸取了Discuz! 7.0大量被用户肯定的设计元素,形成了Discuz!NT自有的风格。首页的快速发主题可以让大论坛里面只关注某个版块的用户方便分享自己最新的事情,还有弹窗方式的快速登录、注册、发帖、编辑帖子等等快捷的功能,将有更好的用户体验效果。 另外,Discuz!NT 3.0的API进行了全面开放,发帖、回复、创建用户、修改用户资料积分、创建版块、获取版块列表、获取帖子列表等功能可以让开发者很轻松的二次开发或者系统整合。3.0版本API取消了2.6版本中API许多功能受到session的限制,3.0版本API可以授权应用程序任意的修改用户密码等一系列操作,真正方便二次开发。值得一提的是,Discuz!NT 3.0采用了一系列加密算法来保证安全性,Discuz!NT 官方发布的API应用都可以放心使用,第三方开发的应用需要经过Discuz!NT 官方认证,用户大可以放心使用。Discuz!NT 3.0的API的又一大改进是支持客户端调用,基于安全考虑,官方对客户端调用程序进行了严格的功能限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值