高分求教一个数据表修复问题

wdjlily 2006-07-07 11:01:01
公司数据库中有一张数据表最近不知道什么原因出错!主要反应在不能导出和查询上!但通过企业管理器可以查看。
用Set Transaction Isolation Level READ UNCOMMITTED


sp_dboption 'DataScrape_Master','single user','true';
GO

DBCC CHECKTABLE ('DataScrape_Master.dbo.Post_200605', REPAIR_ALLOW_DATA_LOSS );
GO

sp_dboption 'DataScrape_Master','single user','false';
GO
修复提示CHECKDB 发现了 0 个分配错误和 1 个一致性错误,这些错误并不与任何单个的对象相关联。
已经没有招了!望各位大侠指点!分不够可以继续追加!只要能解决问题就可以。
...全文
227 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
OracleRoob 2006-07-08
  • 打赏
  • 举报
回复
--try
将表的聚集索引降排序,取出允许的top n条记录。
云中客 2006-07-07
  • 打赏
  • 举报
回复
同意楼上的说法,关注
OracleRoob 2006-07-07
  • 打赏
  • 举报
回复
如果能通过企业管理器看到数据,说明按聚集索引排序的最前面的数据没有损坏。

可以试着用select top N * from 表名

N由小到大,逐步增大N,直到提示不能查询,逐条删除损坏的数据。

wdjlily 2006-07-07
  • 打赏
  • 举报
回复
我有一个思路想通过select语言把数据写入另一张表!但需要一个参数让它遇到错误行主动跳过继续下面的。不知道有没有这样的参数!望各位高手指教
wdjlily 2006-07-07
  • 打赏
  • 举报
回复
to sxycgxj(云中客)
select * into 新表 from 表名
是否能够成功
会提示操作中断!执行不下去!我也试的用导入导出也不行!也会提示错误中断。
数据量为500多万。手工处理是不可能的
云中客 2006-07-07
  • 打赏
  • 举报
回复
如果数据量不大,可以手工把数据记下来,重新创建表来完成
云中客 2006-07-07
  • 打赏
  • 举报
回复
在查询分析器中使用下面的语句试下:
select * into 新表 from 表名
是否能够成功
hsh_boy 2006-07-07
  • 打赏
  • 举报
回复
没碰到这个问题,期待!
lzhs 2006-07-07
  • 打赏
  • 举报
回复
关注一下.
wdjlily 2006-07-07
  • 打赏
  • 举报
回复
我删了快100行了!还是不行!修复提示
表错误: 页 (1:1874669),槽 0,列 2 不是有效的复杂列。
未能修复此错误。
CHECKTABLE 发现了 0 个分配错误和 1 个一致性错误,这些错误并不与任何单个的对象相关联。
'post_200605' 的 DBCC 结果。
对象 'post_200605' 有 1732595 行,这些行位于 69537 页中。
repair_allow_data_loss 是最低的修复级别(对于由 DBCC CHECKTABLE (DataScrape_Master.dbo.post_200605 repair_allow_data_loss) 发现的错误而言)。
OracleRoob 2006-07-07
  • 打赏
  • 举报
回复
删除后,用

DBCC CHECKTABLE ('DataScrape_Master.dbo.Post_200605', REPAIR_ALLOW_DATA_LOSS );

检查表中是否还有损坏的数据。

或者

用select * from 表查询一下,检查表中是否还存在分配错误和一致性错误。


如果有,继续删!!
wdjlily 2006-07-07
  • 打赏
  • 举报
回复
不行啊!我删除了出错的一行还是不能读取!难道是错了很多行?还是删除完了需要重建什么呢
hhwlc 2006-07-07
  • 打赏
  • 举报
回复
mark
学习,帮顶。期待楼主的解决结果
OracleRoob 2006-07-07
  • 打赏
  • 举报
回复
set rowcount 1

delete 表名

--这两条语句一起执行,只会删除第一条。

--为了保险起见,建议楼主先备份数据库。
wdjlily 2006-07-07
  • 打赏
  • 举报
回复
出错的数据我已经找到!之前的记录300多万条我已经导出来放进别的表中!剩下170万条左右记录。我可以肯定是剩下数据中的第一条出错!我现在怎么删除它呢?我的索引是一个自动生成的随机ID。我不知道是多少啊!我怎么删除这条数据呢?

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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