sqlserver2008中,dbcc checkdb数据库提示多个一致性错误怎么处理

[复制链接]
查看11 | 回复5 | 2021-1-27 05:49:05 | 显示全部楼层 |阅读模式
sqlserver2008中,dbcccheckdb数据库提示多个一致性错误,如下图:


检查是数据表[UFTmpTable_33565914_5231678149313212099]出现了问题,不知道是怎么生成的,其实这个表是无用的表,试图删除它提示表不存在或无权限;
检查表sys.objects、sys.indexes,发现sys.objects中有数据,但sys.indexes中无数据,所以出现一致性错误。
试图从sysobjects中删除记录,提示”不允许对系统目录进行即席更新。”

网上搜了下,大概都是说sql2000以上版本都不支持修改系统表,实在不知道怎么处理了,请大神们帮忙看看!
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:49:05 | 显示全部楼层
这看起来不是一个表,而一个统计信息,可以考虑把这个表上索引和统计信息全删除,然后重建索引。
注意备份
回复

使用道具 举报

千问 | 2021-1-27 05:49:05 | 显示全部楼层
确实是一个表,我在资源管理器中可以查到这个表:


我试着查了这表的统计信息,查不到,索引、字段都查不到,只有在sysobjects表中有一条记录:


我就想把这条记录删除,应该就不会出现一致性错误了吧

回复

使用道具 举报

千问 | 2021-1-27 05:49:05 | 显示全部楼层
alterdatabaseDbNamesetsingle_userwithrollbackimmediate
go
dbcccheckdb(DbName,repair_allow_data_loss)
go
alterdatabaseDbNamesetmulti_user
go
--------------------------------------------------
Sql2000以上也可以修改系统表,只是要用DAC登入
还是建议用dbcc去修就好

回复

使用道具 举报

千问 | 2021-1-27 05:49:05 | 显示全部楼层
dbcccheckdb(DbName,repair_allow_data_loss)
就是这样修复的,不行,报错,上面就是修复时报的错误
回复

使用道具 举报

千问 | 2021-1-27 05:49:05 | 显示全部楼层
如果尝试自动修复不了,
建议新建个空数据库,把有用数据导入新数据库,然后2个数据库名字互换.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行