microsoft sql server 2008数据库恢复到2005(版本降级)

实例:一个mssql 2008的数据库备份,要还原到2005上,本来以为备份时把数据库兼容级别为2005或2000、再备份,就可以还原到2005上,但事实上不行。

通过google找到了一个办法,有点麻烦,但还是可以比较完美还原的。

高版本上导出兼容在低版本上的创建数据库结构的的sql脚本,拿到低版本上执行,创建数据库及表结构,然后使用导入数据功能,从高版本上导入到低版本上。导入时,要对每个表勾选“启用标识插入”。

具体来说:

mssql manger studio 打开”对象资源管理器”(没有的话按F8), 连接到待备份的数据库,在待备份的数据库上点右键 – 任务 -生成脚本

在”脚本向导”的”选择数据库”中, 勾选”为所选数据库中的所有对象编写脚本”

下一步的”设置脚本选项”中, 找到”为服务器版本编写脚本”项, 选择合适的低版本(”SQL Server 2005″或2000 )(这步很重要!!)

mssql_export_as_script mssql_export_as_script_adv

继续完成向导过程,最后把脚本保存到一个 .sql 脚本文件

拿这个sql脚本文件到目标数据库(低版本mssql)上,执行。

然后使用mssql的导入导出功能,勾选需要的表(通常是“全选”),然后点选所有的表,点“编辑映射”,启用标识插入。然后继续即可。

mssql_export_as_script_mapping

excel表格导入mysql方法(手工导入)

这不是最好的办法,但对于只导一次的数据,却是一个有效的方法,虽然非常麻烦。

microsoft office/excel 在日常的应用中,还是相当广泛,但它不是个好工具。把excel导入mysql表,是一个无法忍受的麻烦工作;尤其是表格里带大字段的列,使用phpMyAdmin导入经常是失败的。如果你也遇到这种问题,可以尝试以下方法。

1. 在excel里选中所有数据列,执行替换,把 ‘ 替换成 \’ (把单引号替换成斜杠加单引号,即mysql中的单引号转义)

2. 在excel表格里插入一列,根据mysql表结构,写个excel公式,其实只是个字符串拼接操作,目的是构造一个mysql插入语句,形式大至如下

="insert into `article`(cat_id,title,content,add_time) values('"&D3&"','"&A3&"','"&B3&"',1330516016);"

3. 复制该列,并作为新列粘贴值到旁边(选择性粘贴);或者粘贴到新表格里也可以。

4. 除了刚才的新数据列,把其它列全部删掉,另存为unicode文本格式(实际是utf-16的csv)。

5. 使用记事本打/或其它纯文本编辑工具打开该文件,另存为utf-8编码。(windows下所谓的unicode格式实际是utf-16,这是M$在误导大家)

6. 使用editplus等文本编辑工具,打开该utf-8格式的文件,查找替换,把 “”  替换成 ” (两个连续单引号替换成一个单引号); 因为M$的CSV使用两个双引号来转义双引号,这是个非常愚蠢的约定!MS/windows很多地方都是这样愚蠢的做双字符转义!而标准的csv使用斜杠做特殊字符转义的。

7. 把 “\n\” (行尾双引号与下一行的双引号) 替换成 \n (亦即把行首及行尾的双引号删掉)

8. 把文件最开头及文件最末尾的双引号删掉。

9. 现在就是可以在mysql里执行的insert插入语句了,拿到mysql里执行吧。如果数据量大,推荐使用mysql命令行下导入,连接时最好加上参数 –default-character-set=utf8 ,这样不容易出现乱码。

mysql -uroot -p --default-character-set=utf8