损坏mdf文件恢复迁移至测试环境mysql
拿到一个mssql的mdf数据库文件,需要恢复接着迁移至mysql.
不清楚是ms sql 2000,2005,2008 or more old.
1、
windows 2003安装sql server 2008 r2 附加此mdf数据库文件,死活附加不上,出现不一致性错误,看来数据库文件已经损坏。
2、
利用各类查看数据库文件的软件查看数据库里面的内容是否还存在,
mdfview 与 mssql数据恢复大师,可以查看到mdf里面的数据库信息,证明这个mdf文件没有完全损坏。
3、
win7安装ms sql 2005继续附加mdf文件,依旧报错,参考网上将数据库设置为紧急救援模式,单用户模式,设置ldf日志文件(后续生成,在ms sql 2008版本类似操作不行),接着恢复到多用户模式,将数据库恢复在线,
4、
此时可以看到数据库里面的表信息,数据信息,利用备份功能将数据库备份一份出去,看是否能在ms sql 2008恢复,报错metadata元数据信息错误,又是搞了一会儿不行。
5、
利用数据迁移软件将ms sql 2005的数据库直接迁移到mysql,
绝大部分软件都是收费的:
navicat 不好用,因为数据库坏掉了一推报错
DB2DB 破解版 数据迁移不全,非常多的表不能够迁移(可能用的是低版本)
mssqltomysql 比较好,有点慢,数据迁移的比较全,限制每表1000笔数据(1.8版本),在2.*版本就是限制20张表的部分数据了。
MSSQL2MySQLPro 有注册,数据表迁移没有mssqltomysql那么多,但是数据有,并且还有迁移失败的日志信息。
6、
mssqltomysql 结合mssql2mysqlpro两款软件进行迁移
查看日志信息,将不能迁移的表记录,
因为mssql 与 mysql 在字段上不能很好的转换,所以需要mssql修改字段类型,
比如:mssql 的 numice
这些个问题估计是会在新版本的软件中能够被修复。
另外还有一些表数据被损坏,导致某些字段不能迁移,则需要删除(感觉可能不一定对)
7、
以mssqltomysql迁移的为准,只有4张表失败,另外超过1000比数据的表限制,(4张失败的表数据不重要,几比数据,且mssql2mysqlpro能迁移)
mssql2mysqlpro将迁移至另外mysql数据库,接着将mssqltomysql中限制1000笔数据表,备份成sql文件,,,,在另mysql数据库中进行建表恢复。
8、
将数据表整理完成之后,对比ms sql 2005中的数据,部分大表数据迁移不够完整,少了一些少量数据。
9、
因为大部分数据还在,也能接收,接着从vm 的mysql 备份恢复到测试环境的mysql数据库,提供给开发提取。