您的位置:首页 > 数据库

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

2011-05-26 13:58 369 查看
实战数据库版本的降迁(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐