在数据库5 中找不到分区 ID xxxx的目录条目, 元数据不一致。

好记忆不如烂笔头abc 2014-09-21 10:07:44
windows2003+sqlserver2008r2sp1
由于磁盘突然损坏,系统修复后,sqlserver的一个库db为可疑状态。
于是采用如下步骤修复:

参考:http://database.51cto.com/art/201108/285855.htm

1、修改数据库为紧急模式
ALTER DATABASE db SET EMERGENCY
2、使数据库变为单用户模式
ALTER DATABASE db SET SINGLE_USER
3、修复数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象错误。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修复报告的错误。但是,这些修复可能会导致一些数据丢失。
DBCC CheckDB (db, REPAIR_ALLOW_DATA_LOSS)
4、使数据库变回为多用户模式
ALTER DATABASE db SET MULTI_USER

执行1,4步后,数据库可疑状态消失。但是查询所以分区表都报如下错误:
在数据库5 中找不到分区 ID 为 xxxxxxxxxxxxxxxxxxx 的目录条目。元数据不一致。请运行 DBCC CHECKDB 查看元数据是否已损坏。

所以分区表都不能dml和ddl操作,执行就报如上错误。
由于当前库没有备份,有没有办法解决?
...全文
895 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 20 楼 DBA_Huangzj 的回复:
打击一下,网上工具很多,但是不是每个工具都能用或者好用,有些工具不仅恢复不了,甚至会把好的部分给搞坏
刚刚发现是收费软件,呵呵
發糞塗牆 2014-09-24
  • 打赏
  • 举报
回复
打击一下,网上工具很多,但是不是每个工具都能用或者好用,有些工具不仅恢复不了,甚至会把好的部分给搞坏
  • 打赏
  • 举报
回复
引用 18 楼 DBA_Huangzj 的回复:
你见到的Oracle问题只是没那么严重而已,严重问题Oracle本身也不一定能简单解决
找到一款工具,到时试试。嘿嘿 http://www.duote.com/soft/54026.html SQLSERVER数据恢复工具-鱼肠 V3.2
發糞塗牆 2014-09-24
  • 打赏
  • 举报
回复
你见到的Oracle问题只是没那么严重而已,严重问题Oracle本身也不一定能简单解决
  • 打赏
  • 举报
回复
sqlserver的真不知怎么把数据搞出来了。 还是Oracle的方法多。
發糞塗牆 2014-09-24
  • 打赏
  • 举报
回复
DBCC CHECKDB (<Database Name>) WITH NO_INFOMSGS, ALL_ERRORMSGS 这个只是检查,不修复
  • 打赏
  • 举报
回复
http://db-pub.com/forum-80463458/no-catalog-entry-found-for-partition-id-x-in-database-y.html DBCC CHECKDB (<Database Name>) WITH NO_INFOMSGS, ALL_ERRORMSGS 好像还是不行!
發糞塗牆 2014-09-24
  • 打赏
  • 举报
回复
不过你要有个心理准备,不是所有的错误都能修复的,即使微软出马也不一定
  • 打赏
  • 举报
回复
http://dba.stackexchange.com/questions/35595/how-might-a-corrupt-partition-in-tempdb-result-in-dbcc-checkdb-reporting-no-issu 回头有空我试试这个
發糞塗牆 2014-09-24
  • 打赏
  • 举报
回复
2008用压缩备份通常能达到1:4的体积,这点空间都负担不起。。。
  • 打赏
  • 举报
回复
引用 10 楼 DBA_Huangzj 的回复:
额。。。不过我觉得即使能执行,也不一定能修复你的问题,正式库怎么能没有备份呢?
空间不太够,客户不重视,呵呵
發糞塗牆 2014-09-24
  • 打赏
  • 举报
回复
额。。。不过我觉得即使能执行,也不一定能修复你的问题,正式库怎么能没有备份呢?
  • 打赏
  • 举报
回复
引用 8 楼 DBA_Huangzj 的回复:
USE AdventureWorks2012;
  GO
  ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
  REBUILD;
  GO
这样呢?
目前没在客户现场,无法试了。
發糞塗牆 2014-09-24
  • 打赏
  • 举报
回复
USE AdventureWorks2012;
  GO
  ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
  REBUILD;
  GO
这样呢?
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
你说重建不行是只重建的操作是可以,但是还是差不了分区,还是说连重建的命令都执行不了?
drop不了,所以也就没有到create那步。
發糞塗牆 2014-09-24
  • 打赏
  • 举报
回复
你说重建不行是只重建的操作是可以,但是还是差不了分区,还是说连重建的命令都执行不了?
  • 打赏
  • 举报
回复
引用 4 楼 DBA_Huangzj 的回复:
把数据重新导到一个新表可行不?
根本就没法select啊,怎么导?
發糞塗牆 2014-09-22
  • 打赏
  • 举报
回复
考虑在分区表上重建聚集索引试试。
發糞塗牆 2014-09-22
  • 打赏
  • 举报
回复
把数据重新导到一个新表可行不?
  • 打赏
  • 举报
回复
引用 2 楼 DBA_Huangzj 的回复:
考虑在分区表上重建聚集索引试试。
删除都不行! 重建也不行。
加载更多回复(1)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧