首先查询是那些表出现故障了,你可以使用
EXEC sp_MSforeachtable @command1='select top 1 * from ?'
只要返回错误的就记下这个表。试着用dts导出这个表。然后回到sysindexes中删除刚刚查询到的出现故障的项目。
删除时必须要进入紧急模式,方法是:Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go根据刚刚导出的表试着重建一下表。
EXEC sp_MSforeachtable @command1='select top 1 * from ?'
只要返回错误的就记下这个表。试着用dts导出这个表。然后回到sysindexes中删除刚刚查询到的出现故障的项目。
删除时必须要进入紧急模式,方法是:Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go根据刚刚导出的表试着重建一下表。
重建表后,再次运行dbcc checkdb检查一下
1.建立一个新库,先将数据用dts导入到这个新库中。
2.若实在是没有办法导入,那你试试建立一个新表,结构与损坏的表的一致,包括索引。
3.获取损坏表的id:
select id from 损坏库..sysobjects where name='errortable' and type='u'
4.获取新建库的结构表id
select id from 新建库..sysobjects where name='新建表' and type='u'然后进入紧急模式,删除损坏库中的sysindexes.id=刚刚获取的损坏库的id值
DELETE sysindexes WHERE id=损坏的id值INSERT INTO 损坏库..sysindexes(...) select 损坏的id,,,,,,, from 新建库..sysindexes where id=新建id5.再次运行dbcc checkdb试试
我再试下你说的方法。
损坏的表中有大量数据需要使用
sysindexes
由于数据移动,未能继续以 NOLOCK 方式扫描。
服务器: 消息 823,级别 24,状态 2,行 1
连接中断还有就是直接把备份的表的结构的sysindexes中的信息insert into 损坏库中
sysindexes中提示列名不对称的错误。 郁闷啊
因为这样错误,你不是很清楚内部机制的话,很容易造成数据库启动不来,越弄越坏。
运行
dbcc checkdb(dbname) with PHYSICAL_ONLY
看看是否有错误返回