日期:2014-05-17  浏览次数:20645 次

关于新老备份的系统表替换问题?
本帖最后由 larruping 于 2013-04-26 20:52:53 编辑
数据库由于机器的原因,sysindexes表损坏了,所以某些表无法读取,目前手头上有老的数据备份,能不能用老的sysindexes替换出错的sysindexes表?
或者有其他修复sysindexes表的方法?

数据是没有问题的,用一些修复软件可以读出数据,但是由于这些软件太贵了,所以只能另外想办法!
备份 修复

------解决方案--------------------
按我目前的只是,你这个修复不了,因为从用户角度只是一个视图,不能修改,也不建议修改它的原始表。即使你有备份,也不能去覆盖这个表,因为没有表级还原,需要同步数据,而不能修改这个表,同步也就不可能成功。
------解决方案--------------------
引用:
嗯,我也找了很多方法试,也没办法修复
但是那些MDF数据恢复软件是可以读取用户表数据的,请问您知道这大概是什么原理吗?
MDF的记录比较简单,直接存放在数据页,通过DBCC PAGE命令可以知道数据页的内容,但是系统视图,看清楚是视图而不是表,只是一个展示信息,底层数据表你还不能看到,其实存放在resource数据库里面的,所以你也看不到它里面的信息,同时也不允许你修改的。
------解决方案--------------------
系统目录不好修复的吧,sysindexes应该是在primary的文件组,不知道你的其他表是不是也在这个文件组,如果是的话,那么:
1. 用老的备份还原一个新的数据库,这里的数据应该不是最新的;
2. 试着把能读取数据的表数据到过来,这样保证这部分表的数据没有丢;
3. 剩余的那几个不可以读取的表,就用备份回复出来的数据吧(不过不是最新数据了)
------解决方案--------------------
1:新建一个空的数据库
2:导入你的备份
3:将新数据库的数据清空
4:将老数据库的数据导入新数据库中

这个思路可以尝试一下